有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

来自插件的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);

但是,筛选的资源似乎无法读取此值。 有谁能告诉我这种方法有什么问题吗

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

非常感谢


共 (2) 个答案

  1. # 1 楼答案

    Maven在initialize phase中设置属性。我假设在那个阶段,maven加载系统属性。之后,maven不再加载系统属性。如果在此阶段之后尝试添加系统属性,则不会加载该属性

    尝试在validate phase中运行插件

  2. # 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,但明确禁止这种用法