maven的resources、filter和profile实现不同环境使用不同配置文件

maven的resources、filter和profile实现不同环境使用不同配置文件

利用filter实现对资源文件(resouces)过滤

maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的${key}进行替换,最终把你的资源文件中的username=${key}替换成username=value

利用profile来切换环境

maven profile可使用操作系统信息,jdk信息,文件是否存在,属性值等作为依据,来激活相应的profile,也可在编译阶段,通过mvn命令加参数 -PprofileId 来手工激活使用对应的profile
结合filter和profile,我们就可以方便的在不同环境下使用不同的配制

  • pom.xml中标签中过滤资源文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 先指定 src/main/resources下所有文件及文件夹为资源文件 -->
<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>application.properties</include>
<include>jdbc.properties</include>
<include>log4j.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<log.home>${user.home}/logs/dev.log</log.home>
<log4j.level>debug</log4j.level>
<jdbc.driver></jdbc.driver>
<jdbc.url></jdbc.url>
<jdbc.username></jdbc.username>
<jdbc.password></jdbc.password>
</properties>
</profile>
<profile>
<id>release</id>
<properties>
<log.home>/app/tomcat/logs/product.log</log.home>
<log4j.level>debug</log4j.level>
<jdbc.driver></jdbc.driver>
<jdbc.url></jdbc.url>
<jdbc.username></jdbc.username>
<jdbc.password></jdbc.password>
</properties>
</profile>
</profiles>
  • 打包命令

    mvn package -P dev

    mvn clean install -Dmaven.test.skip=true -P dev

1
2
3
$ maven clean install -Pdev
$ maven clean install -Ptest
$ maven clean install -Prelease
  • Notice:插件maven-help-plugin提供了一个目标帮助用户了解当前激活的profile:
1
2
$ mvn help:active-profiles
$ mvn help:all-profiles # 另外还有一个目标来列出当前所有的profile: