0

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

http://maven.apache.org/ref/3.0-beta-3/maven-embedder/ 谁能给出一个以编程方式使用 org.apache.maven.cli.MavenCli 的好例子?

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

4

1 回答 1

1

不,只需在项目中包含 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> 
于 2015-07-07T22:19:35.483 回答