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