Il existe un simple plugin Eclipse pour exécuter Gradle, qui utilise simplement la ligne de commande pour lancer gradle.
Qu'est-ce que Gradle Analog for Maven Compile and Run
mvn compile exec:java -Dexec.mainClass=example.Example
De cette façon, tout projet avec gradle.build
peut être exécuté.
MISE À JOUR: Il y avait une question similaire Quel est l'équivalent gradle du plugin exec de maven pour exécuter des applications Java? demandé avant, mais la solution suggérée de modifier chaque projetbuild.gradle
package runclass;
public class RunClass {
public static void main(String[] args) {
System.out.println("app is running!");
}
}
Puis exécution 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
Réponses:
Il n'y a pas d'équivalent direct à
mvn exec:java
in gradle, vous devez soit appliquer leapplication
plugin, soit avoir uneJavaExec
tâche.application
brancherActivez le plugin:
Configurez-le comme suit:
Sur la ligne de commande, écrivez
JavaExec
tâcheDéfinissez une tâche, disons
execute
:Pour courir, écrivez
gradle -PmainClass=Boo execute
. Vous obtenezmainClass
est une propriété passée dynamiquement en ligne de commande.classpath
est prêt à récupérer les dernières classes.Si vous ne transmettez pas la
mainClass
propriété, les deux approches échouent comme prévu.la source
build.gradle
, leclasspath
est codé en dur pour récupérer les classes java à partir de votrebuild.gradle
chemin de classe source java . Même lorsque vous exécutezmvn exec:java
le classpath est configuré pour récupérer les fichiers source java dans le répertoire maven actuel. Dans laJavaExec
tâche, j'ai fait la même chose. Changez leclasspath
pour votre source java et le chemin de classe changera automatiquement. Il n'y a pas d'mvn exec:java
équivalent dans lagradle
nécessité d'appliquer leapplication
plugin ou d'avoir uneJavaExec
tâche.task execute(...
à build.gradle, toutes les autres tâches échouent avec le même message d'erreur indiquant que gradle s'attend à ce que mainClass soit transmis. Je ne peux pas nettoyer ou construire.main = mainClass
parmain = getProperty("mainClass")
et il ne vous criera plus dessus.gradle build
, voir ma réponse ci-dessous.Il vous suffit d'utiliser le plugin Gradle Application :
Et puis simplement
gradle run
.Comme le souligne Teresa, vous pouvez également configurer en
mainClassName
tant que propriété système et exécuter avec un argument de ligne de commande.la source
build.graldle
. Mais j'ai un projet avec beaucoup de classes util, qui ont toutes une méthode principale.System.getProperty("mainClass")
, 3) le code source est là où il est censé être selon la convention, 4) tout fonctionne quand vous mettezRunClass
dans le fichier de construction?build.gradle
amainClassName = "runclass.RunClass"
. Le paramètre-DmainClass
n'a aucun effet:gradle run -DmainClass=runclass.RunClass2
exécute la classe principale codée en dur.ext.mainClass = project.hasProperty('mainClass') ? project.getProperty('mainClass') : 'org.gradle.sample.Main' ; apply plugin:'application' ; mainClassName = ext.mainClass
Maintenant, quand vous le faites, vousgradle -PmainClass=Foo run
devriez l'utiliserFoo
comme classe principale.En développant la réponse de First Zero, je suppose que vous voulez quelque chose où vous pouvez également exécuter
gradle build
sans erreurs.Les deux
gradle build
etgradle -PmainClass=foo runApp
travailler avec ceci:où vous définissez votre classe principale par défaut.
la source
plugins { application }; application { mainClassName = if (project.hasProperty("mainClass")) project.properties.get("mainClass").toString() else "Foo" }
Scanner
pour lirenextLine()
. Une réflexion sur un correctif pour cela? Continuez à obtenir "aucune ligne trouvée" lors de l'exécution en utilisant runApp.Vous pouvez le paramétrer et passer gradle clean build -Pprokey = goodbye
la source