Java開發學習(三十二)----Maven多環境設定切換與跳過測試的三種方式

2022-09-12 12:01:36

一、多環境開發

  • 我們平常都是在自己的開發環境進行開發,

  • 當開發完成後,需要把開發的功能部署到測試環境供測試人員進行測試使用,

  • 等測試人員測試通過後,我們會將專案部署到生成環境上線使用。

  • 這個時候就有一個問題是,不同環境的設定是不相同的,如不可能讓三個環境都用一個資料庫,所以就會有三個資料庫的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所在目錄下進行執行。