如何使用maven-embedder从java / scala调用maven mojo

时间:2012-05-29 07:31:19

标签: maven maven-plugin maven-embedder

我想直接从java / scala中调用help:effective-pom mojo。

是否有一个最小的例子如何设置maven-runtime并调用mojo?

我认为在调用这个问题的答案之前需要一些上下文:

Reading POM's with its children

e.g。

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

具体来说,有效-pom mojo为xml写了一些丑陋的前缀和后缀,这是不需要的,我想稍后直接在xml上工作。

2 个答案:

答案 0 :(得分:0)

嗯。如果我检查内容,它没有垃圾。输出将生成一个文件。如果你想阅读pom,你应该看看aether lib,但问题是可以用它读取pom但你想要执行一个mojo而不是需要构建一个Maven环境,周围环境非常复杂。看看here to get an impression how it could look like

过了一段时间,我发现了this which looks more你想要使用的东西。

答案 1 :(得分:0)

使用Maven Embedder / MavenCli

Java代码

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

项目配置

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