maven 多環境配置屬性檔案
阿新 • • 發佈:2019-02-19
在開發過程中,我們的軟體會面對不同的執行環境,比如開發環境、測試環境、生產環境,而我們的軟體在不同的環境中,有的配置可能會不一樣,比如資料庫配置檔案、屬性檔案等等。 使用maven來實現多環境的構建可移植性,需要藉助maven提供的profile功能,通過不同的環境啟用不同的profile來達到構建的可移植性。
思路:對於我當前的系統來說,是藉助 maven-resources-plugin 此外掛 將原始碼和資原始檔複製到一個current目錄中去的,那麼對於不同環境中需要的資料庫配置檔案 屬性檔案 等properties檔案來說 , 我們可以在共公有模組中 , 在src\main目錄下建立env\dev ,env\pro ,den\test 等三個環境下的配置檔案目錄,裡面存放各自環境下的配置檔案 然後在parent模組中 通過配置profiles來指定構建時複製上述三個目錄下的哪個目錄到current中去。
1. 首先在parent模組的pom檔案中配置profiles
上面是通過profile指定了屬性env的值 通過<activeByDefault 預設dev環境2.使用maven-resource-plugin將指定目錄複製到current目錄中去
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${app.dir}</outputDirectory> <resources> <resource><directory>./webapp/</directory> <filtering>false</filtering> </resource> </resources> </configuration> </execution> <!-- 把指定目錄放到target/classes裡 --> <execution> <id>copy-conf</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>./target/classes</outputDirectory> <resources> <resource> <directory>./src/main/resources</directory> <filtering>false</filtering> </resource> <resource> <directory>./src/main/env/${env}</directory> <filtering>false</filtering> </resource> </resources> </configuration> </execution> <!-- 把每個工程的目錄複製到 target/classes下 --> <execution> <id>copy-classes-conf</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${app.dir}/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>./target/classes</directory> <filtering>false</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin>
這樣構建時通過 pfofile指定了屬性env的值 在maven-resource-plugin外掛工作時,讀取env的值 ,這樣就可以複製不同環境下的檔案到current中了。
3.這樣配置完之後 如果你使用的是idea進行開發的話 進入命令列模式 進入聚合模組 之後執行 mvn install -Dmaven.test.skip=true -Pdev 就可以了
-P 後面的就是你定義的profile的id