Comment passer des arguments de ligne de commande pour gradle
Je suis en train de passer un argument de ligne de commande pour une classe java. J'ai suivi ce post: http://gradle.1045684.n5.nabble.com/Gradle-application-plugin-question-td5539555.html mais le code ne fonctionne pas pour moi (c'est peut-être pas fait pour JavaExec?). Voici ce que j'ai essayé:
task listTests(type:JavaExec){
main = "util.TestGroupScanner"
classpath = sourceSets.util.runtimeClasspath
//this works...
args 'demo'
/*
//this does not work!
if (project.hasProperty("group")){
args group
}
*/
}
La sortie de la ci-dessus codé en dur args valeur est:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests
:compileUtilJava UP-TO-DATE
:processUtilResources UP-TO-DATE
:utilClasses UP-TO-DATE
:listTests
Received argument: demo
BUILD SUCCESSFUL
Total time: 13.422 secs
Cependant, une fois que j'ai modifier le code pour utiliser le hasProperty section et passer en mode "démo" comme un argument sur la ligne de commande, je reçois un NullPointerException:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests -Pgroup=demo -s
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle\build.gradle' line:25
* What went wrong:
A problem occurred evaluating root project 'testgradle'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project
'testgradle'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
Il existe un test simple du projet disponible à http://gradle.1045684.n5.nabble.com/file/n5709919/testgradle.zip qui illustre bien le problème.
C'est à l'aide de Gradle 1.0-rc-3. Le NullPointer est à partir de cette ligne de code:
args group
J'ai ajouté la tâche avant de la définition de tâche, mais il n'a pas changé le résultat:
group = hasProperty('group') ? group : 'nosuchgroup'
Tous les pointeurs sur comment passer des arguments de ligne de commande pour gradle apprécié.
Vous devez vous connecter pour publier un commentaire.
project.group
est une propriété prédéfini. Avec-P
, vous ne pouvez définir les propriétés du projet qui sont pas prédéfinis. Alternativement, vous pouvez définir les propriétés système Java (-D
).Bâtiment sur Peter N de la réponse, c'est un exemple de la façon d'ajouter (en option) spécifié par l'utilisateur arguments à passer à Java principal pour un JavaExec tâche (puisque vous ne pouvez pas définir la 'args' propriété manuellement pour la raison qu'il cite.)
Ajouter à la tâche:
... et d'exécuter en ligne de commande comme ceci
gradle run -Purl='localhost', -Pport='8080', -Pusername='admin'
comment mon code dans la construction.gradle devrait ressembler?Mon programme avec deux arguments, args[0] et args[1]:
mon build.gradle
mon invite du terminal:
De Gradle 4.9 plugin d'Application comprend
--args
option, donc en passant les arguments est aussi simple que:construire.gradle
src/main/java/my/App.java
bash
J'ai écrit un bout de code qui met les arguments de ligne de commande dans le format que gradle attend.
ma tâche ressemble à ceci:
Pour passer les arguments de la ligne de commande exécuter ce:
Il est possible d'utiliser personnalisée options de ligne de commande dans Gradle pour finir avec quelque chose comme:
En effet, les options de ligne de commande dans Gradle sont un l'incubation de fonctionnalité.
Solution Java
De se retrouver avec quelque chose comme cela, suivez les instructions ici:
Puis de l'enregistrer:
Maintenant vous pouvez le faire:
de sortie:
Kotlin solution
puis enregistrer la tâche avec:
passer une url à partir de la ligne de commande de garder votre url dans app gradle fichier comme suit
resValue "chaîne", "url", CommonUrl
et de donner un paramètre dans gradle.des fichiers de propriétés comme suit
CommonUrl="mettez votre url ici ou peut être vide"
et passer une commande à partir de la ligne de commande comme suit
gradle assembleRelease -Pcommanurl=mettre votre URL ici