Solución:
Pruebe el complemento maven-exec-plugin. Desde allí:
mvn exec:java -Dexec.mainClass="com.example.Main"
Esto ejecutará su clase en la JVM. Puedes usar -Dexec.args="arg0 arg1"
para pasar argumentos.
Si está en Windows, solicite cotizaciones para
exec.mainClass
yexec.args
:mvn exec:java -D"exec.mainClass"="com.example.Main"
Si está haciendo esto con regularidad, también puede agregar los parámetros al pom.xml:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.Main</mainClass>
<arguments>
<argument>foo</argument>
<argument>bar</argument>
</arguments>
</configuration>
</plugin>
Aunque el ejecutivo de Maven hace el truco aquí, lo encontré bastante pobre para una prueba real. Mientras esperaba a maven shell, y con la esperanza de que esto pudiera ayudar a otros, finalmente salí a este repositorio mvnexec
Clónelo y enlace simbólicamente el script en algún lugar de su ruta. yo suelo ~/bin/mvnexec
, Como yo tengo ~/bin
en mi camino. creo mvnexec es un buen nombre para el script, pero depende de usted cambiar el enlace simbólico …
Lánzalo desde la raíz de tu proyecto, donde puedes ver los directorios src y target.
El script busca clases con el método principal, ofreciendo una selección para elegir una (Ejemplo con un 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 uno (escribiendo un número), se le solicitarán argumentos (puede evitarlo con mvnexec -P
)
De forma predeterminada, compila el proyecto en cada ejecución. pero puedes evitar eso usando mvnexec -B
Permite buscar solo en clases de prueba -M
o --no-main
, o solo en clases principales -T
o --no-test
. también tiene una opción de filtro por nombre -f <whatever>
Espero que esto pueda ahorrarle algo de tiempo, para mí lo hace.