1. 程式人生 > >Maven 如何為不同的環境打包 —— 開發、測試和生產環境

Maven 如何為不同的環境打包 —— 開發、測試和生產環境

在開發過程中,我們的軟體會面對不同的執行環境,比如開發環境、測試環境、生產環境,而我們的軟體在不同的環境中,有的配置可能會不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置,那每次我們將軟體部署到不同的環境時,都需要修改相應的配置檔案,這樣來回修改,是個很麻煩的事情。有沒有一種方法能夠讓我們不用修改配置就能釋出到不同的環境中呢?當然有,這就是接下來要做的事。

當然,這裡的前提是使用maven做為構建工具。

使用maven來實現多環境的構建可移植性,需要藉助maven提供的profile功能,通過不同的環境啟用不同的profile來達到構建的可移植性。

一、配置profile

首先是profile配置,在pom.xml中新增如下profile的配置: 

<profiles>
<profile>
<!-- 本地開發環境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>

</activation>
</profile>
<profile>
<!-- 測試環境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<!-- 生產環境 -->

<id>product</id>
<properties>
<profiles.active>product</profiles.active>
</properties>
</profile>
</profiles>

二、配置檔案

針對不同的環境,我們定義不同的配置檔案,而這些配置檔案都做為資原始檔放到maven工程的resources目錄下,即src/main/resources目錄下,
且各個環境的配置分別放到相應的目錄下,而所有環境都公用的配置,直接放到src/main/resources目錄下或WEB-INF/目錄下。如下圖所示:

三、maven資源外掛配置

 在配置檔案在resource目錄下時,可以直接如下配置:

<build/>
  <filters>
  <filter>${project.basedir}/src/main/resources/environment/env-${profiles.active}.properties</filter>
  </filters>
  <resources>
  <resource>
  <directory>src/main/resources</directory>
  <filtering>true</filtering>
  </resource>
  </resources>
</build>

但是當配置檔案在WEB-INF目錄下時,需要增加如下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>acfun-online</warName>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>

From: http://www.cnblogs.com/tartis/p/5391079.html

另外可參考:https://my.oschina.net/vernon/blog/271970