2011-09-26 90 views
14

我已经阅读了一些关于如何从maven插件设置属性的问题(其中大部分都讨论了应用程序的版本号)。 看来没有简单的方法来做到这一点,我发现最好的解决方案是有一个filter.properties文件,从插件更新并由主pom文件使用来过滤所需的资源。从插件设置maven属性

我尝试另一种解决办法我读这从Maven的文档(Maven filter plugin)后:

变量可以包括在你的资源。这些由$ {...}定界符表示为 的变量可以来自系统属性,您的 项目属性,来自过滤器资源和命令 一行。

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

System.setProperty("currentVersion", appCurrentVersion); 

然而,过滤资源似乎并没有看到它的值。 有人能告诉我这种方法有什么问题吗?

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

非常感谢。

回答

18

不要把它设置为系统属性,将其设置为Maven项目属性

// inject the project 
/** @parameter default-value="${project}" */ 
private org.apache.maven.project.MavenProject project; 

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

参见:

+0

完美!谢谢,肖恩。 – PaquitoSoft

3

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

尝试运行您的插件validate phase

+0

我已经运行插件在验证阶段。对不起,我之前没有提到它。 – PaquitoSoft