【问题标题】:Set maven property from plugin从插件设置 Maven 属性
【发布时间】:2011-11-25 02:16:51
【问题描述】:

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

从 Maven 文档 (Maven filter plugin) 中阅读此内容后,我尝试了另一种解决方案:

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

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

System.setProperty("currentVersion", appCurrentVersion);

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

更新:我在 validate 阶段运行我的插件。

非常感谢。

【问题讨论】:

    标签: java maven maven-plugin


    【解决方案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);
    

    见:


    建议使用Properties.put() 而不是Properties.setProperty() 进行编辑。虽然从技术上讲,Properties 实现了Map,但明确不鼓励这种用法in the Properties javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 2012-10-03
      • 2017-01-28
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2020-12-13
      相关资源
      最近更新 更多