从插件中设置maven属性

Paq*_*oft 16 java maven-plugin maven

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

我从Maven文档(Maven过滤器插件)中读到这个后尝试了另一个解决方案:

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

我发现有趣的是可以从系统属性中读取变量.所以,我修改了我的插件来设置这样的系统属性:

System.setProperty("currentVersion", appCurrentVersion);
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢.

Sea*_*oyd 23

不要将其设置为系统属性,将其设置为Maven Project属性

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

// and in execute(), use it:
project.getProperties().setProperty("currentVersion", appCurrentVersion);
Run Code Online (Sandbox Code Playgroud)

看到:


amr*_*mra 5

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

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