首页 > 解决方案 > 在 maven 插件和调用 maven 项目 pom 之间共享属性

问题描述

我创建了一个 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

标签: javamavenpluginspom.xmlmaven-plugin

解决方案


找到了解决办法,如果我们在插件配置中添加${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);

推荐阅读