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);
}
ただし、このコードはmaven.execute
null ポインター例外のために失敗します。これらの null ポインター例外はDefaultMaven
、初期化されていないプライベート フィールドが原因で、基本的にどこにでもあります。それらはすべて で注釈が付けられている@Required
ため、これは Plexus と関係があると推測しています。
Maven を使用してそのようなビルドを正常に実行するにはどうすればよいですか?