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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM