Hay un complemento simple de Eclipse para ejecutar Gradle, que solo usa la línea de comandos para iniciar gradle.
¿Qué es gradle analógico para maven compilar y ejecutar?
mvn compile exec:java -Dexec.mainClass=example.Example
De esta forma se gradle.build
podría ejecutar cualquier proyecto con .
ACTUALIZACIÓN: Hubo una pregunta similar ¿ Cuál es el equivalente gradle del complemento ejecutivo de maven para ejecutar aplicaciones Java? preguntado antes, pero la solución sugirió alterar cada proyectobuild.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
Respuestas:
No hay un equivalente directo a
mvn exec:java
en gradle, debe aplicar elapplication
complemento o tener unaJavaExec
tarea.application
enchufarActivar el complemento:
Configúrelo de la siguiente manera:
En la línea de comando, escriba
JavaExec
tareaDefina una tarea, digamos
execute
:Para correr, escribe
gradle -PmainClass=Boo execute
. Usted obtienemainClass
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
mainClass
propiedad, ambos enfoques fallan como se esperaba.fuente
build.gradle
,classpath
está codificado para recoger las clases java de tu ruta de clases fuentebuild.gradle
java . Incluso cuando ejecuta,mvn exec:java
la ruta de clase está configurada para recoger los archivos fuente de Java en el directorio actual de maven. En laJavaExec
tarea, he hecho lo mismo. Cambie elclasspath
de su fuente de Java y la ruta de clases cambiará automáticamente. No haymvn exec:java
equivalente en el sentido degradle
que debe aplicar elapplication
complemento o tener unaJavaExec
tarea.task execute(...
a build.gradle, todas las demás tareas fallan con el mismo mensaje de error que indica que gradle espera que se transmita mainClass. No puedo limpiar ni construir.main = mainClass
conmain = getProperty("mainClass")
y ya no te gritará .gradle build
, vea mi respuesta a continuación.Solo necesita usar el complemento de la aplicación Gradle :
Y luego simplemente
gradle run
.Como señala Teresa, también puede configurarlo
mainClassName
como una propiedad del sistema y ejecutarlo con un argumento de línea de comando.fuente
build.graldle
. Pero tengo un proyecto con muchas clases de utilidades, que cada una tiene un método principal.System.getProperty("mainClass")
, 3) el código fuente está donde se supone que debe estar de acuerdo con la convención, 4) todo funciona cuando ponesRunClass
el archivo de compilación?build.gradle
tienemainClassName = "runclass.RunClass"
. El parámetro-DmainClass
no tiene ningún efecto:gradle run -DmainClass=runclass.RunClass2
ejecuta la clase principal codificada.ext.mainClass = project.hasProperty('mainClass') ? project.getProperty('mainClass') : 'org.gradle.sample.Main' ; apply plugin:'application' ; mainClassName = ext.mainClass
ahora, cuando lo hagasgradle -PmainClass=Foo run
, debería usarFoo
como clase principal.Ampliando la respuesta de First Zero, supongo que desea algo en el que también pueda ejecutar
gradle build
sin errores.Ambos
gradle build
ygradle -PmainClass=foo runApp
trabajar con esto:donde estableces tu clase principal predeterminada.
fuente
plugins { application }; application { mainClassName = if (project.hasProperty("mainClass")) project.properties.get("mainClass").toString() else "Foo" }
Scanner
para leernextLine()
. ¿Alguna idea de una solución para esto? Sigue obteniendo "no se encuentra ninguna línea" cuando se ejecuta con runApp.Puede parametrizarlo y pasar gradle clean build -Pprokey = goodbye
fuente