从插件设置 maven 属性

2022-09-02 09:40:51

我在这里读到了一些关于如何从maven插件设置属性的问题(其中大多数都谈到了应用程序的版本号)。似乎没有简单的方法来做到这一点,我发现的最佳解决方案是有一个filter.properties文件,该文件从插件更新,并由主pom文件用于过滤所需的资源。

我从Maven文档(Maven过滤器插件)中阅读此内容后尝试了另一种解决方案:

变量可以包含在您的资源中。这些变量(由 ${...} 分隔符表示)可以来自系统属性、项目属性、筛选器资源和命令行。

我发现有趣的是,变量可以从系统属性中读取。因此,我修改了我的插件以设置如下系统属性:

System.setProperty("currentVersion", appCurrentVersion);

但是,筛选的资源似乎不读取此值。谁能告诉我这种方法有什么问题?

更新:我在验证阶段运行我的插件。

多谢。


答案 1

不要将其设置为“系统属性”,而应将其设置为“Maven 项目”属性

// inject the project
@Parameter(defaultValue = "${project}")
private org.apache.maven.project.MavenProject project;

// and in execute(), use it:
project.getProperties().setProperty("currentVersion", appCurrentVersion);

看:


建议使用 而不是 的编辑。虽然从技术上讲,实现 ,但在属性 javadoc 中明确不鼓励这种用法。Properties.put()Properties.setProperty()PropertiesMap


答案 2

Maven 在初始化阶段设置属性。我假设在那个阶段,maven加载系统属性。之后,maven 不会再次加载系统属性。如果尝试在此阶段之后添加系统属性,则不会加载该属性。

尝试在验证阶段运行插件。


推荐