Maven根據不同的環境打包不同的配置


前言:

在開發過程中,我們的軟件會面對不同的運行環境,比如開發環境、測試環境、生產環境,而我們的軟件在不同的環境中,有的配置可能會不一樣,比如數據源配置、日志文件配置等等。

那么就需要借助maven提供的profile功能,通過不同的環境激活不同的profile來實現“maven根據不同的運行環境,打包不同的配置文件”的目的。

一、原理      

   利用filter實現對資源文件(resouces)過濾 

           maven filter可利用指定的xxx.properties中對應的key=value對資源文件中的${key}進行替換,最終把你的資源文件中的username=${key}替換成username=value 

   利用profile來切換環境 

       maven profile可使用操作系統信息,jdk信息,文件是否存在,屬性值等作為依據,來激活相應的profile,也可在編譯階段,通過mvn命令加參數 -PprofileId 來手工激活使用對應的profile 
結合filter和profile,我們就可以方便的在不同環境下使用不同的配置

二、pom配置

 <profiles> 
    <profile> 
      <id>cluster</id>  
      <activation> 
        <property> 
          <name>node</name> 
        </property> 
      </activation>  
      <build> 
        <finalName>ota</finalName>  
        <filters> 
          <filter>${project.basedir}/src/cluster/nodes/${node}.properties</filter> 
        </filters>  
        <resources> 
          <resource> 
            <targetPath>${project.basedir}/target/${project.build.finalName}</targetPath>  
            <filtering>true</filtering>  
            <directory>${project.basedir}/src/main/sca-resources</directory>  
            <includes> 
              <include>META-INF/**/*.composite</include>  
              <include>definitions.xml</include> 
            </includes> 
          </resource>  
          <resource> 
            <targetPath>${project.basedir}/target/${project.build.finalName}/WEB-INF/classes</targetPath>  
            <filtering>true</filtering>  
            <directory>${project.basedir}/src/main/resources</directory>  
            <includes> 
              <include>**/*.xml</include>  
              <include>**/*.properties</include>  
              <include>policy</include> 
            </includes> 
          </resource> 
        </resources> 
      </build> 
    </profile>  
    
  </profiles> 
  • activation:在activation元素中指定激活條件
  • property:當maven檢測到property(pom中如${name}這樣的)profile將被激活   無論取任何值,都會觸發

執行打包命令

 手工編譯,打包:maven clean package -Ptest      激活id="test"的profile 

                              

install 和 package命令的區別

1.install:打包好的 jar 包會安裝到本地的 maven 倉庫中,使用的配置是默認的配置,供其他項目使用。 
2.package 指定參數打包:clean package -Dmaven.test.skip=true -Pprod 這種方式就是指定了打包的參數,並且打包后的文件存放到項目的 target 目錄下。

 


免責聲明!

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



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