如何从java运行maven?
我想从Java执行maven命令来开发一个插件。 我试过mavenembedded式,但看起来像现在不支持。 有人知道一些可以使用的其他工具吗?
一个简单的调用API:maven-invoker。
项目文档: http : //maven.apache.org/shared/maven-invoker/
用法: http : //maven.apache.org/shared/maven-invoker/usage.html
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 );
使用Mavenembedded
Mavenembedded器仍然支持,易于configuration,所以这是更好的select。
Java代码
MavenCli cli = new MavenCli(); cli.doMain(new String[]{"clean", "install"}, "project_dir", System.out, System.out);
项目configuration
<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
Maven embedder确实不再被支持(只有哈德森还在使用它)。 但是,像在哈德森一样,还有其他几种运行maven的方法。 你可以简单地运行Maven作为外部程序:
Runtime.getRuntime().exec("mvn clean install");
或者你可以考虑为maven创build一个ant脚本。 这个脚本可以被称为外部程序,或者(如果你需要更多的控制),将ant添加到你的类path并调用Antrunner。
UPDATE
Maven embedder现在再次被支持,所以这是你最好的select。