在你问为什么我可以生成一个进程来执行mvn之前,我希望通过Maven API执行一个Maven构建,这样我就可以收集关于构建中发生的事情,产生的工件等的信息.依赖于org.apache.maven:maven-core:jar:3.0.4,我写了以下方法试图做这样的事情:
public static void build(File directory, File pom) {
Maven maven = new DefaultMaven();
MavenExecutionRequest exec = new DefaultMavenExecutionRequest();
exec.setBaseDirectory(directory);
exec.setPom(pom);
MavenExecutionResult result = maven.execute(exec);
MavenProject proj = result.getProject();
Artifact art = proj.getArtifact();
System.out.println(art);
}
Run Code Online (Sandbox Code Playgroud)
但是,maven.execute由于空指针异常,此代码失败.由于DefaultMaven未初始化私有字段,这些空指针异常基本上无处不在.它们都带有注释@Required,所以我猜这与Plexus有关.
如何成功使用Maven来执行这样的构建?
我从未真正使用过这个 API,不过看起来很有趣。
我不明白你将目标设定在哪里?
您可能需要setGoals在 Maven 执行请求上调用:
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |