¿Cómo ejecutar Maven desde Java?

Quiero ejecutar el comando maven de Java para el desarrollo de un plugin. Probé maven-embedder pero parece que ahora no es compatible. ¿Alguien conoce alguna otra herramienta que pueda usarse?

Una API de invocación simple: maven-invocador.

Documentación del proyecto: http://maven.apache.org/shared/maven-invoker/

Uso: http://maven.apache.org/shared/maven-invoker/usage.html

 InvocationRequest request = new DefaultInvocationRequest(); request.setPomFile( new File( "/path/to/pom.xml" ) ); request.setGoals( Arrays.asList( "clean", "install" ) ); Invoker invoker = new DefaultInvoker(); invoker.execute( request ); 

Utilice Maven Embedder

Maven Embedder sigue siendo compatible y fácil de configurar, por lo que esta es la mejor opción para usted.

Código Java

 MavenCli cli = new MavenCli(); cli.doMain(new String[]{"clean", "install"}, "project_dir", System.out, System.out); 

Configuración del proyecto

   org.apache.maven maven-embedder 3.1.1   org.eclipse.aether aether-connector-wagon 0.9.0.M2   org.apache.maven.wagon wagon-http-lightweight 2.5   

Ejemplo completamente funcional: https://github.com/mariuszs/maven-cli-example

Maven embedder ya no es compatible (solo Hudson todavía lo usa). Pero, como en Hudson, hay muchas otras formas de ejecutar Maven. Simplemente podría ejecutar maven como un progtwig externo:

 Runtime.getRuntime().exec("mvn clean install"); 

O podrías considerar crear un script ant para maven. Esta secuencia de comandos podría llamarse como un progtwig externo o (si necesita más control) agregar ant a su ruta de clase y llamar al Antrunner.

ACTUALIZAR

Maven Embedder ahora es compatible de nuevo, así que esa es tu mejor opción.