利用maven的filter和profile實現不一樣環境使用不一樣的配製

在咱們日常的java開發中,會常常使用到不少配製文件(xxx.properties,xxx.xml),而當咱們在本地開發(dev),測試環境測試(test),線上生產使用(product)時,須要不停的去修改這些配製文件,次數一多,至關麻煩。如今,利用maven的filter和profile功能,咱們可實如今編譯階段簡單的指定一個參數就能切換配製,提升效率,還不容易出錯,詳解以下。java

 

一,原理:maven

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

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

  • 利用profile來切換環境

maven profile可以使用操做系統信息,jdk信息,文件是否存在,屬性值等做爲依據,來激活相應的profile,也可在編譯階段,經過mvn命令加參數 -PprofileId 來手工激活使用對應的profileui

結合filter和profile,咱們就能夠方便的在不一樣環境下使用不一樣的配製spa

 

二,配製操作系統

在工程根目錄下添加3個配製文件:插件

  • config-dev.properties   -- 開發時用
  • config-test.properties   -- 測試時用
  • config-product.properties  -- 生產時用

工程根目錄下的pom文件中添加下面的設置:xml

<build>資源

<resources>開發

<!-- 先指定 src/main/resources下全部文件及文件夾爲資源文件 -->

<resource>

<directory>src/main/resources</directory>

<includes>

<include>**/*</include>

</includes>

</resource>

<!-- 設置對auto-config.properties,jdbc.properties進行過慮,即這些文件中的${key}會被替換掉爲真正的值 -->

<resource>

<directory>src/main/resources</directory>

<includes>

<include>auto-config.properties</include>

<include>jdbc.properties</include>

</includes>

<filtering>true</filtering>

</resource>

</resources>

</build>

 

 

 

<profiles>
<profile>
<id>dev</id>

<!-- 默認激活開發配製,使用config-dev.properties來替換設置過慮的資源文件中的${key} -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>config-dev.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>test</id>
<build>
<filters>
<filter>config-dev.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>product</id>
<build>
<filters>
<filter>config-product.properties</filter>
</filters>
</build>
</profile>
</profiles>

 

三,使用

  • 那麼就使用maven插件或者手工控制檯下打maven編譯命令吧

由於pom.xml中設置了dev爲默認激活的,因此默認會把config-dev拿來進行替換${key}

  • 測試環境

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

  • 生產環境

手工編譯,打包:maven clean install -Pproduct -- 激活id="product"的profile

相關文章
相關標籤/搜索