Совместное использование свойств между плагином maven и вызывающим pom проекта maven - PullRequest
0 голосов
/ 27 июня 2019

Я создал плагин Maven P, который я хочу использовать в качестве зависимости в другом проекте Maven A. Я предоставляю некоторые параметры этому плагину P из pom проекта Maven A.

Iхотите установить некоторые свойства в плагине P на основе параметров, предоставленных проектом A, и хотите, чтобы на них ссылались в pom проекта A. Как я могу это сделать?

Я попытался установить свойства для MavenProject в плагине P. Как я могу отослать их в pom для проекта 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>
                    </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 голосов
/ 03 июля 2019

Нашли решение, если мы добавим $ {project} A в качестве параметра в конфигурацию плагина, мы можем добавить к нему свойства, которые могут быть указаны в проекте 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);
0 голосов
/ 27 июня 2019

Если я правильно понимаю этот вопрос, попробуйте добавить:

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

внизу файла Plugin P pom.xml, непосредственно перед концом </project>

Я не совсем уверен, что это сработает, поскольку я плохо знаю Maven, но, пожалуйста, дайте мне знать.

Удачи вам.

...