在maven插件和调用maven项目pom之间共享属性

时间:2019-06-27 02:53:51

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

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

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

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

项目pom片段:

<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代码段

@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

2 个答案:

答案 0 :(得分:0)

找到了解决方案,如果我们向插件配置中添加$ {project} A作为参数,则可以为其添加属性,可以在project A pom中引用该属性。

例如:

<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);

答案 1 :(得分:-1)

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

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

位于Plugin P的{​​{1}}文件底部,就在pom.xml的结尾

由于我对Maven的了解有限,我不确定这是否还能奏效,但是请告诉我。

祝你好运。