Filtering

Filtering是resource插件的功能,作用是将资源文件中的占位符替换成对应的值,如下图所示:
Maven Filtering和Profile

使用注意

  1. 启用resource插件的filtering功能;
  2. 设定资源文件的路径、过滤条件和编码等等;
  3. 设定属性文件来源(POM定义属性和环境变量直接使用,外部属性文件通过标签指定);
    Maven Filtering和Profile

说明:maven-resources-plugin插件的copy-resources功能被绑定到validate阶段,即Lifecycle执行到validate时,资源被拷贝,占位符被替换;
Maven Filtering和Profile

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生效范围

  1. 如果定义在settings.xml文件中,则是全局的,对所有的maven项目文件都生效;
  2. 如果定义在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里的占位符。
Maven Filtering和Profile

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

参考:

  1. https://maven.apache.org/plugins/maven-resources-plugin/copy-resources-mojo.html;
  2. https://segmentfault.com/a/1190000003908040;
  3. https://www.cnblogs.com/0201zcr/p/6262762.html;

相关文章:

  • 2021-03-27
  • 2021-04-01
  • 2022-01-03
  • 2021-05-13
  • 2021-08-25
  • 2022-01-03
  • 2019-01-03
猜你喜欢
  • 2021-05-15
  • 2021-12-02
  • 2021-11-06
  • 2021-12-16
  • 2019-07-30
  • 2021-11-23
  • 2021-11-07
相关资源
相似解决方案