日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

filter动态参数 maven_使用Profile和Resources Filter隔离测试环境

發(fā)布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 filter动态参数 maven_使用Profile和Resources Filter隔离测试环境 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Maven能夠幫我們很好的管理測試,我們可以在src/test/java

和 src/test/resources

下面使用JUnit或者TestNG 編寫單元測試和集成測試,然后在命令行運行 mvn test

,測試就會自動運行,同時產(chǎn)生詳細(xì)的測試報告。對只有一兩個人的項目來說,不會碰到本文將提到的問題。

我們考慮以下場景(這也是我在實際項目中碰到的問題):有一個大概30人團隊的項目,其中一半在美國,另一半在中國,要知道兩個地方的網(wǎng)絡(luò)連接速度不是很快,也就是說從地球的一端連接地球另一端的數(shù)據(jù)庫十分耗時。中國的團隊開發(fā)了一些模塊,也很積極的編寫了大量單元測試和集成測試(我這里說的單元測試使指不對外部任何環(huán)境有依賴),這些代碼完全由Maven管理,所以在中國團隊這里,持續(xù)集成服務(wù)器上只有簡單的一條 mvn clean install

命令,一切都很好!但是,當(dāng)美國團隊簽出同樣的源代碼,運行同樣的命令時,問題出現(xiàn)了,測試在他們那里總是過不去,經(jīng)過檢查,發(fā)現(xiàn)代碼中有太多的硬編碼的數(shù)據(jù)庫鏈接,以及其它的對外部環(huán)境的依賴。于是他們抱怨:How can you hardcode database link? 中國的同事很委屈:我們已經(jīng)從代碼里把這些東西抽取到配置文件里了,這不算Hardcode吧。大家暫時沒辦法,于是只能在build命令后加上-Dtest -DfailIfNoTests

,build可以過了,但是美國團隊心里總是不舒服,尤其是當(dāng)他們代碼把測試弄壞時,他們經(jīng)常不知道。

問題總是要解決的,更何況現(xiàn)在的問題也不小。讓我們看看Maven為我們提供了什么,大家首先會想到的肯定是Profile,通過Profile,我們可以通過Maven傳入一些個性化變量。考慮一下我們的情況下什么需要個性化?也就是說什么東西在不同的地方值是不一樣的?答案是src/test/resources

下的一些資源文件,如JPA用到的 persistence.xml

,其中包含了這樣的內(nèi)容:

我們看到這個資源文件綁定到了本機的mysql數(shù)據(jù)庫上,我們需要從Maven傳入這些參數(shù),包括url, username和password。可問題是,通過Profile傳輸?shù)膫€性化變量,我們能在pom.xml里面引用,我們?nèi)绾卧趕rc/test /resources

下的資源文件里引用它們呢?

先別急,先讓我們把Profile定義好,這里我選擇在%M2_HOME%/conf

下的settings.xml

里定義全局的Profile,因為數(shù)據(jù)庫鏈接是很多模塊的測試都會用到的,定義如下:

myProfile

jdbc:mysql://localhost:3306

test

test

test

myProfile

此外,修改資源文件如下:

至此,我們已經(jīng)把環(huán)境相關(guān)的變量隔離開了,每個用戶都有自己的settings.xml

文件,所以每個人都能配置自己的settings.xml

來使用他想要使用的數(shù)據(jù)庫。針對我們上面的場景,美國的團隊只要在本地配置一個數(shù)據(jù)庫,他們也就可以運行測試了,皆大歡喜!

最后,不要忘了配置 Maven Resources 插件讓它開啟 filtering 功能:

[...]

src/test/resources

true

[...]

至此,運行 mvn install

,Maven 會讓 Resources 插件首先根據(jù) setttings.xml

文件中的值填充測試資源文件中的變量,然后再運行測試。這種解決方案不僅僅適用于數(shù)據(jù)庫,任何外部環(huán)境配置都可以使用該方案,如對消息服務(wù)器的依賴。盡情享受Maven給你帶來的便利吧!

分享到:

2008-06-22 12:46

瀏覽 10483

評論

謝謝分享!

5 樓

axlfu

2010-08-05

hi,我用filter做配置替換,設(shè)置了filter的文件,編碼采用GB18030,但替換后的文件有些亂碼(大部分是正確的),導(dǎo)致應(yīng)用無法啟動

源文件:

替換后:

請教下該如何解決?

4 樓

juvenshun

2008-11-03

imcaptor 寫道

我的問題,settings里面大小寫有問題。<activeProfiles>??? <activeProfile>development</activeProfile>??? <activeprofile>sqlProfile</activeprofile>? </activeProfiles>應(yīng)該是:<activeProfiles>??? <activeProfile>development</activeProfile>??? <activeProfile>sqlProfile</activeProfile>? </activeProfiles>我用mvn help:active-profiles看了一下有效的profile。

sorry, 大小寫問題已修復(fù)

3 樓

imcaptor

2008-11-02

我的問題,settings里面大小寫有問題。

development

sqlProfile

應(yīng)該是:

development

sqlProfile

我用mvn help:active-profiles看了一下有效的profile。

2 樓

imcaptor

2008-11-02

我試了,好像不管用啊,settings.xml設(shè)置了,但是沒有起作用。

1 樓

lovefly_zero

2008-08-05

很好的東西 收藏了

總結(jié)

以上是生活随笔為你收集整理的filter动态参数 maven_使用Profile和Resources Filter隔离测试环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。