Maven分步詳解多環(huán)境配置與應(yīng)用流程
多環(huán)境開發(fā)
我們平常都是在自己的開發(fā)環(huán)境進行開發(fā),當(dāng)開發(fā)完成后,需要把開發(fā)的功能部署到測試環(huán)境供測試人員進行測試使用,等測試人員測試通過后,我們會將項目部署到生成環(huán)境上線使用。
這個時候就有一個問題是,不同環(huán)境的配置是不相同的,如不可能讓三個環(huán)境都用一個數(shù)據(jù)庫,所以就會有三個數(shù)據(jù)庫的url配置,我們在項目中如何配置?要想實現(xiàn)不同環(huán)境之間的配置切換又該如何來實現(xiàn)呢?
maven提供配置多種環(huán)境的設(shè)定,幫助開發(fā)者在使用過程中快速切換環(huán)境。具體實現(xiàn)步驟:
步驟1
父工程配置多個環(huán)境,并指定默認激活環(huán)境
<profiles> <!--開發(fā)環(huán)境--> <profile> <id>env_dep</id> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> <!--設(shè)定是否為默認啟動環(huán)境--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--生產(chǎn)環(huán)境--> <profile> <id>env_pro</id> <properties> <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url> </properties> </profile> <!--測試環(huán)境--> <profile> <id>env_test</id> <properties> <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url> </properties> </profile> </profiles>
步驟2
執(zhí)行安裝查看env_dep環(huán)境是否生效
查看到的結(jié)果為:
步驟3
切換默認環(huán)境為生產(chǎn)環(huán)境
<profiles> <!--開發(fā)環(huán)境--> <profile> <id>env_dep</id> <properties> <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url> </properties> </profile> <!--生產(chǎn)環(huán)境--> <profile> <id>env_pro</id> <properties> <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url> </properties> <!--設(shè)定是否為默認啟動環(huán)境--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--測試環(huán)境--> <profile> <id>env_test</id> <properties> <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url> </properties> </profile> </profiles>
步驟4
執(zhí)行安裝并查看env_pro環(huán)境是否生效
查看到的結(jié)果為jdbc:mysql://127.2.2.2:3306/ssm_db
雖然已經(jīng)能夠?qū)崿F(xiàn)不同環(huán)境的切換,但是每次切換都是需要手動修改,如何來實現(xiàn)在不改變代碼的前提下完成環(huán)境的切換呢?
步驟5
命令行實現(xiàn)環(huán)境切換
步驟6
執(zhí)行安裝并查看env_test環(huán)境是否生效
查看到的結(jié)果為jdbc:mysql://127.3.3.3:3306/ssm_db
總結(jié)
總結(jié)來說,對于多環(huán)境切換只需要兩步即可:
父工程中定義多環(huán)境
<profiles> <profile> <id>環(huán)境名稱</id> <properties> <key>value</key> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> ... </profiles>
使用多環(huán)境(構(gòu)建過程)
mvn 指令 -P 環(huán)境定義ID[環(huán)境定義中獲取]
跳過測試
前面在執(zhí)行install
指令的時候,Maven都會按照順序從上往下依次執(zhí)行,每次都會執(zhí)行test
,
對于test
來說有它存在的意義,
- 可以確保每次打包或者安裝的時候,程序的正確性,假如測試已經(jīng)通過在我們沒有修改程序的前提下再次執(zhí)行打包或安裝命令,由于順序執(zhí)行,測試會被再次執(zhí)行,就有點耗費時間了。
- 功能開發(fā)過程中有部分模塊還沒有開發(fā)完畢,測試無法通過,但是想要把其中某一部分進行快速打包,此時由于測試環(huán)境失敗就會導(dǎo)致打包失敗。
遇到上面這些情況的時候,我們就想跳過測試執(zhí)行下面的構(gòu)建命令,具體實現(xiàn)方式有很多:
IDEA工具實現(xiàn)跳過測試
圖中的按鈕為Toggle 'Skip Tests' Mode
,
Toggle翻譯為切換的意思,也就是說在測試與不測試之間進行切換。
點擊一下,出現(xiàn)測試畫橫線的圖片,如下:
說明測試已經(jīng)被關(guān)閉,再次點擊就會恢復(fù)。
這種方式最簡單,但是有點"暴力",會把所有的測試都跳過,如果我們想更精細的控制哪些跳過哪些不跳過,就需要使用配置插件的方式。
配置插件實現(xiàn)跳過測試
在父工程中的pom.xml中添加測試插件配置
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <skipTests>false</skipTests> <!--排除掉不參與測試的內(nèi)容--> <excludes> <exclude>**/BookServiceTest.java</exclude> </excludes> </configuration> </plugin> </plugins> </build>
skipTests:如果為true,則跳過所有測試,如果為false,則不跳過測試
excludes:哪些測試類不參與測試,即排除,針對skipTests為false來設(shè)置的
includes: 哪些測試類要參與測試,即包含,針對skipTests為true來設(shè)置的
命令行跳過測試
使用Maven的命令行,mvn 指令 -D skipTests
注意事項:
- 執(zhí)行的項目構(gòu)建指令必須包含測試生命周期,否則無效果。例如執(zhí)行compile生命周期,不經(jīng)過test生命周期。
- 該命令可以不借助IDEA,直接使用cmd命令行進行跳過測試,需要注意的是cmd要在pom.xml所在目錄下進行執(zhí)行。
到此這篇關(guān)于Maven分步詳解多環(huán)境配置與應(yīng)用流程的文章就介紹到這了,更多相關(guān)Maven多環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring數(shù)據(jù)庫連接池實現(xiàn)原理深入刨析
開發(fā)web項目,我們肯定會和數(shù)據(jù)庫打交道,因此就會涉及到數(shù)據(jù)庫鏈接的問題。在以前我們開發(fā)傳統(tǒng)的SSM結(jié)構(gòu)的項目時進行數(shù)據(jù)庫鏈接都是通過JDBC進行數(shù)據(jù)鏈接,我們每和數(shù)據(jù)庫打一次交道都需要先獲取一次鏈接,操作完后再關(guān)閉鏈接,這樣子效率很低,因此就出現(xiàn)了連接池2022-11-11