Come chiamare un maven mojo da java / scala usando maven-embedder


Voglio chiamare l'aiuto:effective-pom mojo direttamente da java/scala.

C'è un esempio minimo su come configurare il maven-runtime e chiamare il mojo?

Presumo che sia necessario un contesto prima di chiamare le cose come previsto nella risposta a questa domanda:

Leggere POM con i suoi figli

Ad es.

Http://svn.apache.org/viewvc/maven/plugins/tags/maven-help-plugin-2.1.1/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java?view=markup

In particolare, l'efficace-pom mojo scrive un brutto prefisso e suffisso sull'xml che non è necessario e voglio lavorare direttamente sull'xml in seguito.

Author: Community, 2012-05-29

2 answers

Hm. Se controllo il contenuto non ha spazzatura. L'output risulterà in un singolo file. Se ti piace leggere il pom dovresti dare un'occhiata a aether lib, ma il problema è che puoi leggere il pom con esso ma vorresti invece eseguire un mojo che ha bisogno di costruire un ambiente Maven attorno al quale è molto complesso. Dai un'occhiata a qui per avere un'impressione di come potrebbe apparire.

Dopo un po ' di tempo ho trovato questo che sembra più la cosa che ti piace utilizzare.

 0
Author: khmarbaise, 2012-06-04 20:09:36

Usa Maven Embedder / MavenCli

Codice Java

MavenCli cli = new MavenCli();
cli.doMain(new String[]{"help:effective-pom"}, "project_dir", System.out, System.out);

Configurazione del progetto

<dependencies>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-embedder</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-connector-wagon</artifactId>
        <version>0.9.0.M2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http-lightweight</artifactId>
        <version>2.5</version>
    </dependency>
</dependencies>
 0
Author: MariuszS, 2013-11-11 10:53:16