如何从Java运行Maven?使用 Maven 嵌入器

2022-09-01 01:27:41

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


答案 1

一个简单的调用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 );

答案 2

使用 Maven 嵌入器

Maven嵌入器仍然受支持且易于配置,因此这是您更好的选择。

Java 代码

MavenCli cli = new MavenCli();
cli.doMain(new String[]{"clean", "install"}, "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>

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


推荐