从插件设置 Maven 属性
Posted
技术标签:
【中文标题】从插件设置 Maven 属性【英文标题】:Set maven property from plugin 【发布时间】:2011-11-25 02:16:51 【问题描述】:我在这里阅读了一些关于如何从 maven 插件设置属性的问题(其中大多数都谈到了应用程序的版本号)。 似乎没有简单的方法可以做到这一点,我发现最好的解决方案是有一个 filter.properties 文件,该文件从插件更新并由主 pom 文件用于过滤所需的资源。
从 Maven 文档 (Maven filter plugin) 中阅读此内容后,我尝试了另一种解决方案:
变量可以包含在您的资源中。这些变量,表示 由 $... 分隔符,可以来自系统属性,您的 项目属性,来自您的过滤器资源和命令 行。
我发现可以从系统属性中读取变量很有趣。所以,我修改了我的插件来设置这样的系统属性:
System.setProperty("currentVersion", appCurrentVersion);
但是,过滤后的资源似乎不会读取此值。 谁能告诉我这种方法有什么问题?
更新:我在 validate 阶段运行我的插件。
非常感谢。
【问题讨论】:
【参考方案1】:Maven 在initialize phase 中设置属性。我假设在那个阶段 Maven 加载系统属性。之后,maven 不再加载系统属性。如果您尝试在此阶段之后添加系统属性,则不会加载它。
尝试在validate phase 中运行您的插件。
【讨论】:
我已经在验证阶段运行插件。对不起,我之前没有提到。【参考方案2】:不要设置为系统属性,设置为Maven项目属性
// inject the project
@Parameter(defaultValue = "$project")
private org.apache.maven.project.MavenProject project;
// and in execute(), use it:
project.getProperties().setProperty("currentVersion", appCurrentVersion);
见:
Mojo Developer CookbookMavenProject
javadoc
建议使用Properties.put()
而不是Properties.setProperty()
进行编辑。虽然从技术上讲,Properties
实现了Map
,但明确不鼓励这种用法in the Properties javadoc。
【讨论】:
以上是关于从插件设置 Maven 属性的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Maven 插件 - “附加”设置有啥作用?
有没有办法从 text.file 读取文本并将其设置为 pom.xml maven 中的 maven 属性?