过滤文件
可以过滤子项目的某些文件,即在实际构建开始之前,特殊标记将被其他字符串替换。具体来说,将过滤以下文件:
- 包含/排除模式选择的 POM 文件。必须将要过滤的标记括起来
@...@以避免干扰 Maven 的正常 POM 插值,即使用@project.version@而不是${project.version}. 从 1.3 版开始,如果项目被克隆到临时位置,该插件还将(递归地)过滤通过<parent>或标记引用的所有 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。
- 如果可能,表单的标记
project.*将pom.*扩展为引用的 POM 值,例如,project.version指的pom.xml是执行 Invoker Plugin 中给出的版本。如果不存在这样的 POM 元素,则继续进行值查找,如下所述。 - 将处理 Invoker Plugin 定义的内置属性。有关可用的内置属性的列表,请参阅此表:
内置属性 价值 自从 basedir主构建的项目基目录的绝对路径。 1.1 baseurlfile:主构建的项目基目录的 URL 。1.4 localRepository用于主构建的本地存储库的绝对路径。 1.2 localRepositoryUrlfile:用于主构建的本地存储库的URL。1.3 - 插件配置中的参数给定的属性
filterProperties将被查询以获取其键等于令牌的属性。对于上面显示的示例 POM,该值some-value已与 token 相关联pluginPropertyUsedForFiltering。 - 将在 POM
<properties>部分给出的属性中搜索其键等于令牌的属性。关于示例 POM,该值another-value已与 token 相关联projectPropertyUsedForFiltering。
无法确定重置价值的代币将保持不变。



