Construcciones programáticas usando Maven 3 API

Antes de preguntar por qué puedo generar un proceso para ejecutar mvn, deseo ejecutar una compilación de Maven a través de la API de Maven, para poder recopilar información sobre lo que ocurre en la compilación, los artefactos producidos, etc. Después de depender deorg.apache.maven:maven-core:jar:3.0.4, He escrito el siguiente método en un intento de hacer tal cosa:

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

Sin embargo, este código falla enmaven.execute Debido a las excepciones de puntero nulo. Estas excepciones de puntero nulo están básicamente en todas partes debido a campos privados enDefaultMaven no siendo inicializado. Todos están anotados con@Required, así que supongo que esto es algo que ver con Plexus.

¿Cómo puedo usar con éxito Maven para ejecutar tal compilación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta