1. 程式人生 > >maven 多環境配置屬性檔案

maven 多環境配置屬性檔案

在開發過程中,我們的軟體會面對不同的執行環境,比如開發環境、測試環境、生產環境,而我們的軟體在不同的環境中,有的配置可能會不一樣,比如資料庫配置檔案、屬性檔案等等。     使用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