我在这里阅读了一些关于如何从maven插件设置属性(大多数人谈到应用程序的版本号)的问题。 似乎没有简单的方法可以做到这一点,我找到的最佳解决方案是有一个filter.properties文件,该文件从插件更新并由主pom文件用于过滤所需的资源。
我从Maven文档(Maven filter plugin)中读到这个后尝试了另一种解决方案:
变量可以包含在您的资源中。这些变量表示为 由$ {...}分隔符,可以来自系统属性,你的 项目属性,来自过滤器资源和命令 线。
我发现有趣的是可以从系统属性中读取变量。所以,我修改了我的插件来设置这样的系统属性:
System.setProperty("currentVersion", appCurrentVersion);
但是,过滤后的资源似乎没有读取此值。 有人能告诉我这种方法有什么问题吗?
更新:我正在验证阶段运行我的插件。
非常感谢。
答案 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中运行您的插件。