Programmatische Builds unter Verwendung der Maven 3-API

Bevor Sie fragen, warum ich gerade einen Prozess zum Ausführen von mvn erzeugen kann, möchte ich einen Maven-Build über die Maven-API ausführen, damit ich Informationen darüber sammeln kann, was im Build vor sich geht, welche Artefakte erzeugt werden usw. usw. Nach abhängig vonorg.apache.maven:maven-core:jar:3.0.4Ich habe die folgende Methode geschrieben, um so etwas zu versuchen:

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);
}

Dieser Code schlägt jedoch um fehlmaven.execute aufgrund von Nullzeigerausnahmen. Diese Nullzeigerausnahmen sind im Grunde überall auf private Felder in zurückzuführenDefaultMaven wird nicht initialisiert. Sie sind alle mit kommentiert@RequiredIch schätze, das hat etwas mit Plexus zu tun.

Wie kann ich Maven erfolgreich verwenden, um einen solchen Build auszuführen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage