【问题标题】:Share properties between maven plugin and the calling maven project pom在 maven 插件和调用 maven 项目 pom 之间共享属性
【发布时间】:2019-06-27 02:53:51
【问题描述】:

我创建了一个 Maven 插件 P,我想将其用作另一个 Maven 项目 A 中的依赖项。我从 Maven 项目 A 的 pom 中为插件 P 提供了一些参数。

我想根据项目A提供的参数在插件P中设置一些属性,并希望它们在项目A的pom中被引用。我该怎么做?

我已尝试在插件 P 中设置 MavenProject 的属性。如何在项目 A 的 pom 中引用它们?

项目 A pom sn-p:

<plugin>
                <groupId>sample.plugin</groupId>
                <artifactId>sample-plugin</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <executions>
                  <execution>
                    <goals>
                      <goal>testing</goal>
                    </goals>
                    <configuration>
                        <param1>value1</param1>
                        <param2>value2</param2>
                    </configuration>
                  </execution>
                </executions>
</plugin>

插件P代码sn-p

@Mojo( name = "testing")
public class TestMojo extends AbstractMojo
{

    .
    . 
    @Parameter(property = "param1")
    private String param1;

    @Parameter(property = "param2")
    private String param2;

    @Parameter(defaultValue = "${project}")
    private org.apache.maven.project.MavenProject project;

    public void execute() throws MojoExecutionException
    {
        if(param1.equalsIgnoreCase("value1")){

              project.getProperties().setProperty("PROP1","val1");

        } else{
              project.getProperties().setProperty("PROP1","val3");    
        }

        if(param2.equalsIgnoreCase("value2")){

              project.getProperties().setProperty("PROP2","val2");

        } else{

              project.getProperties().setProperty("PROP2","val3");

        }


     }
}

I expect the PROP1 and PROP2 to be used in project A

【问题讨论】:

  • 您的方法看起来不错。您遇到了哪些问题?
  • 谢谢。我想要实现的是,在项目A的pom中使用P插件中设置的属性!!
  • 我应该使用项目属性还是系统属性在项目A pom中访问?

标签: java maven plugins pom.xml maven-plugin


【解决方案1】:

找到了解决办法,如果我们在插件配置中添加${project}A作为参数,我们可以给它添加属性,可以在project A pom.xml中引用。

例如:

<plugin>
                <groupId>sample.plugin</groupId>
                <artifactId>sample-plugin</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <executions>
                  <execution>
                    <goals>
                      <goal>testing</goal>
                    </goals>
                    <configuration>
                        <param1>value1</param1>
                        <param2>value2</param2>
                        <project>${project}</project>
                    </configuration>
                  </execution>
                </executions>
</plugin>

插件一可以使用这个Maven项目

project.getProperties.setProperty("projectProperty",propertyValue);

【讨论】:

    【解决方案2】:

    如果我对这个问题的理解正确,请尝试添加:

    <dependencies>
       <dependency>
          <groupId>sample.plugin</groupId>
          <artifactId>sample-plugin</artifactId>
          <version>1.0.0-SNAPSHOT</version>
       </dependency>
    </dependencies>
    

    在Plugin P 的pom.xml 文件的底部,就在&lt;/project&gt; 的末尾之前

    由于我对 Maven 的了解有限,我不完全确定这是否可行,但请告诉我。

    祝你好运。

    【讨论】:

    • 可能想看看有一个settings.xml 文件然后:maven.apache.org/settings.html
    • 这个答案是错误的。永远不要将插件添加为依赖项。
    • 没错,插件不应该作为依赖添加。因此,我又一次失败了。
    猜你喜欢
    • 2010-11-16
    • 2019-10-07
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多