Filtering
Filtering是resource插件的功能,作用是将资源文件中的占位符替换成对应的值,如下图所示:
使用注意
- 启用resource插件的filtering功能;
- 设定资源文件的路径、过滤条件和编码等等;
- 设定属性文件来源(POM定义属性和环境变量直接使用,外部属性文件通过标签指定);
说明:maven-resources-plugin插件的copy-resources功能被绑定到validate阶段,即Lifecycle执行到validate时,资源被拷贝,占位符被替换;
Profile
作用:根据不同的条件激活不同的配置;
定义范围:Profile几乎可以定义所有在pom里的定义的内容如、和插件配置等等,如下所示:
<profile><id>dev</id><properties><active.profile>dev</active.profile><pom.jdbc.url>jdbc:mysql://127.0.0.1:3306/dev</pom.jdbc.url></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.4.RELEASE</version></dependency><dependencies></profile>
Profile生效范围
- 如果定义在settings.xml文件中,则是全局的,对所有的maven项目文件都生效;
- 如果定义在pom.xml文件中,则仅对当前项目生效;
Profile激活方式
- -P参数
通过maven 的-P参数激活指定的profile,参数的值是profile的id,多个profile以逗号分割,如果不想激活某个默认的profile,就在它的id前加个!,如下代码:
mvn -U clean package -Ptest,local,!ignore
- <activation>
<profiles><profile><id>ide</id><activation><activeByDefault>true</activeByDefault></activation><properties><module>ide</module></properties></profile><profile><id>api</id><properties><module>api</module></properties></profile></profiles>
Filtering + Profile
思路: 在不同的profile里配置不同的属性(properties),然后激活相应的profile,用其中的属性去替换jdbc.properties里的占位符。
<project>
...
<build><filters><filter>src/main/filters-${active.profile}.properties</filter></filters><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources>
</build>
<profiles><profile><id>dev</id><properties><active.profile>dev</active.profile></properties><!-- 把当前profile设置为默认profile,可以同时这是多个为默认--><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>test</id><properties><active.profile>test</active.profile></properties></profile><profile><id>product</id><properties><active.profile>product</active.profile></properties></profile>
...
</project>
参考:
- https://maven.apache.org/plugins/maven-resources-plugin/copy-resources-mojo.html;
- https://segmentfault.com/a/1190000003908040;
- https://www.cnblogs.com/0201zcr/p/6262762.html;