首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Java运行Maven?

如何从Java运行Maven?
EN

Stack Overflow用户
提问于 2011-02-28 20:11:16
回答 3查看 33.5K关注 0票数 40

我想从Java执行Maven命令来开发一个插件。我尝试过maven-embedder,但看起来现在不支持它。有没有人知道其他可以使用的工具?

EN

回答 3

Stack Overflow用户

发布于 2014-02-04 02:00:36

一个简单的调用API : maven-invoker。

项目文档:http://maven.apache.org/shared/maven-invoker/

用法:http://maven.apache.org/shared/maven-invoker/usage.html

代码语言:javascript
复制
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile( new File( "/path/to/pom.xml" ) );
request.setGoals( Arrays.asList( "clean", "install" ) );

Invoker invoker = new DefaultInvoker();
invoker.execute( request );
票数 56
EN

Stack Overflow用户

发布于 2013-11-11 18:43:15

使用Maven Embedder

Maven embedder仍然受支持且易于配置,因此这对您来说是更好的选择。

Java代码

代码语言:javascript
复制
MavenCli cli = new MavenCli();
cli.doMain(new String[]{"clean", "install"}, "project_dir", System.out, System.out);

项目配置

代码语言:javascript
复制
<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>

完整的工作示例:https://github.com/mariuszs/maven-cli-example

票数 17
EN

Stack Overflow用户

发布于 2011-02-28 20:20:34

Maven embedder确实不再受支持(只有hudson还在使用它)。但是,正如在hudson中一样,还有其他几种运行maven的方法。您可以简单地将maven作为外部程序运行:

代码语言:javascript
复制
Runtime.getRuntime().exec("mvn clean install");

或者,您可以考虑创建一个ant script for maven.,然后可以将此脚本作为外部程序调用,或者(如果您需要更多控制)将ant添加到类路径中并调用ant。

更新

现在再次支持Maven embedder,因此这是您的最佳选择。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5141788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档