Gradle para ejecutar la clase Java (sin modificar la compilación.gradle)
Existe el complemento Eclipse simple para ejecutar Gradle, que solo usa la línea de comandos para iniciar gradle.
Qué es gradle analog para maven compilar y ejecutar
mvn compile exec:java -Dexec.mainClass=example.Example
De esta manera cualquier proyecto con gradle.build
podría ser ejecutado.
ACTUALIZACIÓN: Hubo una pregunta similar ¿Cuál es el equivalente de gradle del complemento exec 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 ejecutar 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
3 answers
Use JavaExec
. Como ejemplo poner lo siguiente en build.gradle
task execute(type:JavaExec) {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
}
Para ejecutar gradle -PmainClass=Boo execute
. Usted consigue
$ 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 comandos. classpath
está configurado para recoger las últimas clases.
Si no pasa la propiedad mainClass
, esto fallará 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
equivalente en gradle, necesitas aplicar el plugin de la aplicación o tener una tarea JavaExec.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-26 07:55:52
Solo necesitas usar el complemento de la aplicación Gradle :
apply plugin:'application'
mainClassName = "org.gradle.sample.Main"
Y luego simplemente gradle run
.
Como Teresa señala, también puede configurar mainClassName
como una propiedad del sistema y ejecutar con un argumento de línea de comandos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-26 01:47:49
Expandiendo la respuesta de First Zero, supongo que quieres algo donde también puedas ejecutar gradle build
sin errores.
Ambos gradle build
y gradle -PmainClass=foo runApp
trabajan 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-15 20:37:42