Gradle pour exécuter la classe Java (sans modifier build.gradle)

Il existe un plug-in Eclipse simple pour exécuter Gradle, qui utilise simplement la ligne de commande pour lancer gradle.

Qu’est-ce que analog gradle pour maven comstackr et exécuter mvn comstack exec:java -Dexec.mainClass=example.Example

De cette façon, tout projet avec gradle.build pourrait être exécuté.

MISE À JOUR: Il y avait une question similaire Quel est l’équivalent graduel du plugin exec de maven pour exécuter des applications Java? demandé avant, mais la solution a suggéré de modifier chaque build.gradle projet

 package runclass; public class RunClass { public static void main(Ssortingng[] args) { System.out.println("app is running!"); } } 

Ensuite, exécuter 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 

Utilisez JavaExec . Comme exemple, mettez ce qui suit dans build.gradle

 task execute(type:JavaExec) { main = mainClass classpath = sourceSets.main.runtimeClasspath } 

Pour exécuter gradle -PmainClass=Boo execute . Vous obtenez

 $ gradle -PmainClass=Boo execute :comstackJava :comstackGroovy UP-TO-DATE :processResources UP-TO-DATE :classes :execute I am BOO! 

mainClass est une propriété transmise dynamicment à la ligne de commande. classpath est configuré pour récupérer les dernières classes.

Si vous ne transmettez pas la propriété mainClass , cela échoue comme prévu.

 $ 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'. 

MISE À JOUR des commentaires:

Il n’existe pas d’ mvn exec:java dans gradle, vous devez soit appliquer le plug-in de l’application, soit avoir une tâche JavaExec.

Il vous suffit d’utiliser le plugin Application Gradle :

 apply plugin:'application' mainClassName = "org.gradle.sample.Main" 

Et puis simplement gradle run .

Comme Teresa le souligne, vous pouvez également configurer mainClassName tant que propriété système et exécuter avec un argument de ligne de commande.

En gradle build la réponse de First Zero, je suppose que vous voulez quelque chose où vous pouvez également exécuter gradle build sans erreurs.

gradle build et gradle -PmainClass=foo runApp fonctionne avec ceci:

 task runApp(type:JavaExec) { classpath = sourceSets.main.runtimeClasspath main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain" } 

où vous définissez votre classe principale par défaut.