ejecutar la clase principal del proyecto Maven

Creé una aplicación Java de consola simple que está desarrollada con Maven. ¿Hay alguna manera de que la clase principal (que no requiere ningún argumento) se puede ejecutar desde la línea de comandos usando un comando maven como:

mvn run-app com.example.MainClass 

Pruebe el maven-exec-plugin . Desde allí:

 mvn exec:java -Dexec.mainClass="com.example.Main" 

Esto ejecutará tu clase en la JVM. Puede usar -Dexec.args="arg0 arg1" para pasar argumentos.

Si está en Windows, aplique presupuestos para exec.mainClass y exec.args :

 mvn exec:java -D"exec.mainClass"="com.example.Main" 

Si lo hace regularmente, puede agregar los parámetros en el pom.xml también:

  org.codehaus.mojo exec-maven-plugin 1.2.1    java     com.example.Main  foo bar    

Aunque maven exec hace el truco aquí, me pareció bastante pobre para una prueba real. Mientras esperaba a Maven Shell , y esperando que esto pudiera ayudar a otros, finalmente salí a este repository .

Clonarlo y enlazar el script en algún lugar de tu camino. Uso ~/bin/mvnexec , ya que tengo ~/bin en mi camino. Creo que mvnexec es un buen nombre para el script, pero depende de usted cambiar el enlace simbólico …

Inicie desde la raíz de su proyecto, donde puede ver src y directorios de destino.

La secuencia de comandos busca clases con el método principal, ofreciendo una selección para elegir una (Ejemplo con proyecto JMeld mavenizado )

 $ mvnexec 1) org.jmeld.ui.JMeldComponent 2) org.jmeld.ui.text.FileDocument 3) org.jmeld.JMeld 4) org.jmeld.util.UIDefaultsPrint 5) org.jmeld.util.PrintProperties 6) org.jmeld.util.file.DirectoryDiff 7) org.jmeld.util.file.VersionControlDiff 8) org.jmeld.vc.svn.InfoCmd 9) org.jmeld.vc.svn.DiffCmd 10) org.jmeld.vc.svn.BlameCmd 11) org.jmeld.vc.svn.LogCmd 12) org.jmeld.vc.svn.CatCmd 13) org.jmeld.vc.svn.StatusCmd 14) org.jmeld.vc.git.StatusCmd 15) org.jmeld.vc.hg.StatusCmd 16) org.jmeld.vc.bzr.StatusCmd 17) org.jmeld.Main 18) org.apache.commons.jrcs.tools.JDiff #? 

Si se selecciona una (número de mecanografía), se le solicitan argumentos (se puede evitar con mvnexec -P )

Por defecto, comstack el proyecto cada ejecución. pero puedes evitar eso usando mvnexec -B

Permite buscar solo en las clases de prueba -M o --no-main , o solo en las clases principales -T o --no-test . también tiene una opción de filtro por nombre -f

Espero que esto te pueda ahorrar algo de tiempo, para mí es suficiente.