运行 来自 Java 的 Maven 目标,机器上没有安装 Maven 可执行文件

Running maven goals from Java without a Maven executable installed on the machine

我正在尝试构建一个项目以从 SCM 检出代码并使用 Maven 构建它。有没有一种方法我们可以从 java 实现 运行 maven 目标而无需提供 maven home(没有安装 maven)。对于 SVN,我使用 svnkit 来实现相同的目的。对于 Maven,我尝试使用以下 2 个选项。

http://maven.apache.org/ref/3.0-beta-3/maven-embedder/ Can anyone give a good example of using org.apache.maven.cli.MavenCli programattically?

对于以上两个选项,我都需要安装 maven。有什么建议吗?

不,只需在您的项目中包含 jar 和以下内容即可编译代码:

MavenCli cli = new MavenCli();
int result = cli.doMain(new String[]{"compile"},
        "workspace/MiscMaven",
        System.out, System.out);
System.out.println("result: " + result);

根据评论,以下是将依赖项添加到项目的方法。这 不会 在您的系统上安装 maven,仅在您的项目构建中包含 JAR:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-embedder</artifactId>
    <version>3.3.3</version>
</dependency>
<dependency>
    <groupId>org.eclipse.aether</groupId>
    <artifactId>aether-connector-basic</artifactId>
    <version>1.0.2.v20150114</version>
</dependency>
<dependency>
    <groupId>org.eclipse.aether</groupId>
    <artifactId>aether-transport-wagon</artifactId>
    <version>1.0.2.v20150114</version>
</dependency>
<dependency>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-http</artifactId>
    <version>2.9</version>
</dependency>
<dependency>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-provider-api</artifactId>
    <version>2.9</version>
</dependency>
<dependency>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-http-lightweight</artifactId>
    <version>2.9</version>
</dependency>