java - example - gradle project
Gradle para ejecutar la clase Java(sin modificar build.gradle) (3)
Hay un plugin de Eclipse simple para ejecutar Gradle, que solo usa la línea de comando para lanzar gradle.
Qué es el análogo de Gradle para maven compilar y ejecutar mvn compile exec:java -Dexec.mainClass=example.Example
De esta forma, cualquier proyecto con gradle.build
podría ejecutarse.
ACTUALIZACIÓN: Hubo una pregunta similar. ¿ Cuál es el equivalente de Gradle del complemento ejecutivo de maven para ejecutar aplicaciones Java? preguntado antes, pero la solución sugirió alterar cada proyecto build.gradle
package runclass;
public class RunClass {
public static void main(String[] args) {
System.out.println("app is running!");
}
}
Luego ejecutando gradle run -DmainClass=runclass.RunClass
:run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task '':run''.
> No main class specified
Al expandir la respuesta de First Zero, supongo que quieres algo donde también puedas ejecutar gradle build
sin errores.
Tanto gradle build
como gradle -PmainClass=foo runApp
funcionan con esto:
task runApp(type:JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain"
}
donde configuras tu clase principal predeterminada.
Solo necesita usar el plugin de la aplicación Gradle :
apply plugin:''application''
mainClassName = "org.gradle.sample.Main"
Y luego simplemente gradle run
.
Como señala Teresa, también puede configurar mainClassName
como una propiedad del sistema y ejecutarlo con un argumento de línea de comando.
Use JavaExec
. Como ejemplo, ponga lo siguiente en build.gradle
task execute(type:JavaExec) {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
}
Para ejecutar 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 pasada dinámicamente en la línea de comando. classpath
está configurado para recoger las últimas clases.
Si no pasa la propiedad mainClass
, esto falla 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''.
ACTUALIZADO de los comentarios:
No hay mvn exec:java
equivalent en gradle, necesita aplicar el plugin de la aplicación o tener una tarea JavaExec.