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?