过滤文件

可以过滤子项目的某些文件,即在实际构建开始之前,特殊标记将被其他字符串替换。具体来说,将过滤以下文件:

  • 包含/排除模式选择的 POM 文件。必须将要过滤的标记括起来@...@以避免干扰 Maven 的正常 POM 插值,即使用@project.version@而不是${project.version}. 从 1.3 版开始,如果项目被克隆到临时位置,该插件还将(递归地)过滤通过<parent>or标记引用的所有 POM 文件。<module>
  • 自定义用户设置文件。同样,此文件中要过滤的标记必须包含在@...@.
  • 调用程序属性、目标文件和配置文件。这些文件中的标记必须使用通常的 Maven 语法${...}

以下示例目录结构突出显示由 Invoker 插件过滤的文件:

./
+- pom.xml
+- src/
   +- it/
      +- settings.xml                  <- Filtered
      +- aggregator-project/
         +- child-module-1/
         |  +- pom.xml                 <- Filtered
         +- child-module-2/
         |  +- pom.xml                 <- Filtered
         +- pom.xml                    <- Filtered
         +- invoker.properties         <- Filtered
         +- goals.txt                  <- Filtered
         +- profiles.txt               <- Filtered

以下是插件配置的相应 POM 片段:

<project>
  <properties>
    <projectPropertyUsedForFiltering>another-value</projectPropertyUsedForFiltering>
  </properties>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>3.2.2</version>
        <configuration>
          <projectsDirectory>src/it</projectsDirectory>
          <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
          <pomIncludes>
            <pomInclude>*/pom.xml</pomInclude>
          </pomIncludes>
          <settingsFile>src/it/settings.xml</settingsFile>
          <filterProperties>
            <pluginPropertyUsedForFiltering>some-value</pluginPropertyUsedForFiltering>
          </filterProperties>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
       </executions>
      </plugin>
    </plugins>
  </build>
</project>

过滤文件时,插件会按以下指示的顺序搜索各种数据源以查找令牌的替换值。一旦找到现有的替换值,搜索就会终止,即该值不是null

  1. 如果可能,表单的标记project.*pom.*扩展为引用的 POM 值,例如,project.version指的pom.xml是执行 Invoker Plugin 中给出的版本。如果不存在这样的 POM 元素,则继续进行值查找,如下所述。
  2. 将处理 Invoker Plugin 定义的内置属性。有关可用的内置属性的列表,请参阅此表:
    内置属性 价值 自从
    basedir 主构建的项目基目录的绝对路径。 1.1
    baseurl file:主构建的项目基目录的 URL 。 1.4
    localRepository 用于主构建的本地存储库的绝对路径。 1.2
    localRepositoryUrl file:用于主构建的本地存储库的URL。 1.3
  3. 插件配置中的参数给定的属性filterProperties将被查询以获取其键等于令牌的属性。对于上面显示的示例 POM,该值some-value已与 token 相关联pluginPropertyUsedForFiltering
  4. 将在 POM<properties>部分给出的属性中搜索其键等于令牌的属性。关于示例 POM,该值another-value已与 token 相关联projectPropertyUsedForFiltering

无法确定重置价值的代币将保持不变。