Construções programáticas usando a API do Maven 3

Antes de você perguntar por que eu posso simplesmente gerar um processo para executar o mvn, eu gostaria de executar uma compilação Maven através da API Maven, para que eu possa coletar informações sobre o que acontece na construção, os artefatos produzidos, etc.org.apache.maven:maven-core:jar:3.0.4, Escrevi o seguinte método em uma tentativa de fazer uma coisa dessas:

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

No entanto, este código falha emmaven.execute devido a exceções de ponteiro nulo. Essas exceções de ponteiro nulo estão basicamente em todos os lugares devido a campos privados emDefaultMaven não sendo inicializado. Eles são todos anotados com@Required, então eu estou supondo que isso é algo a ver com o Plexo.

Como posso usar o Maven com sucesso para executar essa compilação?

questionAnswers(2)

yourAnswerToTheQuestion