标签: maven-embedder

如何从java运行maven?

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

java maven maven-embedder

36
推荐指数
3
解决办法
3万
查看次数

无法通过MavenCli(maven-embedder)运行maven任务

我在我的程序中使用Maven embedder 3.3.3以编程方式运行maven目标,每次运行该MavenCli.doMain方法时都会出现以下错误:

-Dmaven.multiModuleProjectDirectory系统属性未设置.检查$M2_HOME环境变量和mvn脚本匹配.

java eclipse maven maven-embedder

6
推荐指数
1
解决办法
1152
查看次数

Maven嵌入式部署不使用org.apache.httpcomponents.httpclient 4.4版

在我的应用程序中,我必须(mvn)以编程方式部署工件.我是在maven-embedder工件和一些非常简单的代码的帮助下完成的:

MavenCli client = new MavenCli();
int result = client.doMain(new String[] { "deploy" }, "C:/some/path/to/my/pom", System.out, System.out);
Run Code Online (Sandbox Code Playgroud)

为了能够做到这一点,我不得不将以下依赖项添加到我的pom:

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-embedder</artifactId>
  <version>3.2.5</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.8</version>
</dependency>
<dependency>
  <groupId>org.apache.maven.wagon</groupId>
  <artifactId>wagon-provider-api</artifactId>
  <version>2.8</version>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

问题是,当我将httpclient的版本更改为4.4版(最新版本)时,尝试部署时出现以下错误:

4840 [main] WARN Sisu  - Error injecting:   org.apache.maven.wagon.providers.http.HttpWagon
    java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
    at java.lang.ClassLoader.defineClass1(Native Method)
    ...
Caused by: java.lang.ClassNotFoundException:   org.apache.http.ssl.TrustStrategy
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)   
    ... 72 more
Run Code Online (Sandbox Code Playgroud)

任何人都有一个想法,为什么部署在org.apache.httpcomponents.httpclient的4.3.x版本上工作正常并且在版本4.4中失败?

maven maven-embedder maven-deploy-plugin apache-httpclient-4.x

3
推荐指数
1
解决办法
4631
查看次数

在Maven插件中调用MavenCli失败

我已经创建了一个小的util包装MavenCli,使用quickstart原型生成了一个新的Maven项目。

当执行Util单元测试时,它运行良好(只是生成一个空的Maven项目)。

现在,我想将此小包装程序集成到Maven插件中。但是,当我执行mojo(在第三个Maven项目中)时,调用MavenCli失败,但出现以下异常:

[ERROR] Error executing Maven.
[ERROR] java.util.NoSuchElementException
  role: org.apache.maven.eventspy.internal.EventSpyDispatcher
  roleHint: 
[ERROR] Caused by: null
Run Code Online (Sandbox Code Playgroud)

该实用程序如下所示:

public void createProject() {
    final MavenCli cli = new MavenCli();
    System.setProperty("maven.multiModuleProjectDirectory", "/usr/share/maven");
    cli.doMain(new String[] { "archetype:generate", "-DgroupId=com.my.company",
            "-DartifactId=hello-world", "-DarchetypeArtifactId=maven-archetype-quickstart",
            "-DinteractiveMode=false" }, "/tmp", System.out, System.out);
}
Run Code Online (Sandbox Code Playgroud)

util的相关依赖项:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-embedder</artifactId>
    <version>3.3.9</version>
</dependency>
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>3.3.9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

mojo代码如下所示:

@Mojo(name = "custommojo", requiresProject = false)
public class CustomMojo extends AbstractMojo {

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException { …
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven maven-embedder

2
推荐指数
1
解决办法
438
查看次数