来自插件的java Set maven属性
我在这里读到了一些关于如何从maven插件设置属性的问题(大多数问题都是关于应用程序的版本号)。 似乎没有简单的方法可以做到这一点,我发现最好的解决方案是有一个过滤器。属性文件,该文件从插件更新并由主pom文件用于过滤所需资源
在阅读Maven文档(Maven filter plugin)后,我尝试了另一种解决方案:
Variables can be included in your resources. These variables, denoted by the ${...} delimiters, can come from the system properties, your project properties, from your filter resources and from the command line.
我发现有趣的是,可以从系统属性中读取variabled。因此,我修改了我的插件以设置如下的系统属性:
System.setProperty("currentVersion", appCurrentVersion);
但是,筛选的资源似乎无法读取此值。 有谁能告诉我这种方法有什么问题吗
更新:我正在验证阶段运行我的插件
非常感谢
# 1 楼答案
Maven在initialize phase中设置属性。我假设在那个阶段,maven加载系统属性。之后,maven不再加载系统属性。如果在此阶段之后尝试添加系统属性,则不会加载该属性
尝试在validate phase中运行插件
# 2 楼答案
不要将其设置为系统属性,请将其设置为Maven项目属性
见:
编辑建议使用
Properties.put()
而不是Properties.setProperty()
。虽然从技术上讲,Properties
实现了Map
,但明确禁止这种用法