从插件中设置maven属性

时间:2011-09-26 10:07:22

标签: java maven maven-plugin

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

我从Maven文档(Maven filter plugin)中读到这个后尝试了另一种解决方案:

  

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

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

System.setProperty("currentVersion", appCurrentVersion);

但是,过滤后的资源似乎没有读取此值。 有人能告诉我这种方法有什么问题吗?

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

非常感谢。

2 个答案:

答案 0 :(得分:22)

不要将其设置为系统属性,将其设置为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);

请参阅:

答案 1 :(得分:3)

Maven在initialize phase中设置属性。我假设在那个阶段maven加载系统属性。之后,maven不会再次加载系统属性。如果您尝试在此阶段之后添加系统属性而不是未加载。

尝试在validate phase中运行您的插件。