Siéntete en la libertad de compartir nuestro espacio y códigos con otro, necesitamos de tu ayuda para hacer crecer nuestra comunidad.
Solución:
No hay equivalente directo a mvn exec:java
en gradle, debe aplicar el application
complemento o tener un JavaExec
tarea.
application
enchufar
Activa el complemento:
plugins
id 'application'
...
Configúralo de la siguiente manera:
application
mainClassName = project.hasProperty("mainClass") ? getProperty("mainClass") : "NULL"
En la línea de comando, escriba
$ gradle -PmainClass=Boo run
JavaExec
tarea
Definir una tarea, digamos execute
:
task execute(type:JavaExec)
main = project.hasProperty("mainClass") ? getProperty("mainClass") : "NULL"
classpath = sourceSets.main.runtimeClasspath
Para correr, escribe gradle -PmainClass=Boo execute
. Usted obtiene
$ gradle -PmainClass=Boo execute
:compileJava
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes
:execute
I am BOO!
mainClass
es una propiedad que se pasa dinámicamente en la línea de comando. classpath
está configurado para recoger las últimas clases.
Si no pasas en el mainClass
propiedad, ambos enfoques fallan como se esperaba.
$ gradle execute
FAILURE: Build failed with an exception.
* Where:
Build file 'xxxx/build.gradle' line: 4
* What went wrong:
A problem occurred evaluating root project 'Foo'.
> Could not find property 'mainClass' on task ':execute'.
Solo necesita usar el complemento de la aplicación Gradle:
apply plugin:'application'
mainClassName = "org.gradle.sample.Main"
Y luego simplemente gradle run
.
Como señala Teresa, también puedes configurar mainClassName
como una propiedad del sistema y se ejecuta con un argumento de línea de comando.
Ampliando la respuesta de First Zero, supongo que quieres algo donde también puedas correr gradle build
sin errores.
Ambas cosas gradle build
y gradle -PmainClass=foo runApp
trabajar con esto:
task runApp(type:JavaExec)
classpath = sourceSets.main.runtimeClasspath
main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain"
donde establece su clase principal predeterminada.
Nos encantaría que puedieras dar recomendación a este artículo si lograste el éxito.