利用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

相关文章
相关标签/搜索