我已经创建了一个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
答案 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的了解有限,我不确定这是否还能奏效,但是请告诉我。
祝你好运。