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?