一、多環境開發
-
我們平常都是在自己的開發環境進行開發,
-
當開發完成後,需要把開發的功能部署到測試環境供測試人員進行測試使用,
-
等測試人員測試通過後,我們會將項目部署到生成環境上線使用。
-
這個時候就有一個問題是,不同環境的配置是不相同的,如不可能讓三個環境都用一個數據庫,所以就會有三個數據庫的url配置,
-
在項目中如何配置?
-
要想實現不同環境之間的配置切換又該如何來實現呢?
maven提供配置多種環境的設定,幫助開發者在使用過程中快速切換環境。具體實現步驟:
步驟1:父工程配置多個環境,並指定默認激活環境
<profiles>
<!--開發環境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>
<!--設定是否爲默認啓動環境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--生產環境-->
<profile>
<id>env_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--測試環境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
</properties>
</profile>
</profiles>
步驟2:執行maven install安裝即配置好env_dep環境
步驟3:同理可切換默認環境爲生產環境
<profiles>
<!--開發環境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--生產環境-->
<profile>
<id>env_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
<!--設定是否爲默認啓動環境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--測試環境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
</properties>
</profile>
</profiles>
雖然已經能夠實現不同環境的切換,但是每次切換都是需要手動修改,如何來實現在不改變代碼的前提下完成環境的切換呢?
步驟4:命令行實現環境切換
所以總結來說,對於多環境切換隻需要兩步即可:
-
父工程中定義多環境
<profiles> <profile> <id>環境名稱</id> <properties> <key>value</key> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> ... </profiles>
-
使用多環境(構建過程)
mvn 指令 -P 環境定義ID[環境定義中獲取]
二、跳過測試
前面在執行install
指令的時候,Maven都會按照順序從上往下依次執行,每次都會執行test
,
對於test
來說有它存在的意義,
-
可以確保每次打包或者安裝的時候,程序的正確性,假如測試已經通過在我們沒有修改程序的前提下再次執行打包或安裝命令,由於順序執行,測試會被再次執行,就有點耗費時間了。
-
功能開發過程中有部分模塊還沒有開發完畢,測試無法通過,但是想要把其中某一部分進行快速打包,此時由於測試環境失敗就會導致打包失敗。
遇到上面這些情況的時候,我們就想跳過測試執行下面的構建命令,具體實現方式有很多:
方式一:IDEA工具實現跳過測試
圖中的按鈕爲Toggle 'Skip Tests' Mode
,
Toggle翻譯爲切換的意思,也就是說在測試與不測試之間進行切換。
這種方式最簡單,但是有點"暴力",會把所有的測試都跳過,如果我們想更精細的控制哪些跳過哪些不跳過,就需要使用配置插件的方式。
方式二:配置插件實現跳過測試
在父工程中的pom.xml中添加測試插件配置
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>false</skipTests>
<!--排除掉不參與測試的內容-->
<excludes>
<exclude>**/BookServiceTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
skipTests:如果爲true,則跳過所有測試,如果爲false,則不跳過測試
excludes:哪些測試類不參與測試,即排除,針對skipTests爲false來設置的
includes: 哪些測試類要參與測試,即包含,針對skipTests爲true來設置的
方式三:命令行跳過測試
使用Maven的命令行,mvn 指令 -D skipTests
注意事項:
-
執行的項目構建指令必須包含測試生命週期,否則無效果。例如執行compile生命週期,不經過test生命週期。
-
該命令可以不借助IDEA,直接使用cmd命令行進行跳過測試,需要注意的是cmd要在pom.xml所在目錄下進行執行。