Bien sûr, les réponses font avant tout le travail, mais j'aimerais quand même utiliser quelque chose comme
gradle run path1 path2
Eh bien, cela ne peut pas être fait, mais si nous pouvons:
gralde run --- path1 path2
Si vous pensez que c'est plus élégant, alors vous pouvez le faire, l'astuce est de traiter la ligne de commande et de la modifier avant que gradle ne le fasse, cela peut être fait en utilisant des scripts d'initialisation
Le script init ci-dessous:
- Traitez la ligne de commande et supprimez --- et tous les autres arguments suivant '---'
- Ajoutez la propriété 'appArgs' à gradle.ext
Ainsi, dans votre tâche d'exécution (ou JavaExec, Exec), vous pouvez:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Le script init est:
import org.gradle.api.invocation.Gradle
Gradle aGradle = gradle
StartParameter startParameter = aGradle.startParameter
List tasks = startParameter.getTaskRequests();
List<String> appArgs = new ArrayList<>()
tasks.forEach {
List<String> args = it.getArgs();
Iterator<String> argsI = args.iterator();
while (argsI.hasNext()) {
String arg = argsI.next();
// remove '---' and all that follow
if (arg == "---") {
argsI.remove();
while (argsI.hasNext()) {
arg = argsI.next();
// and add it to appArgs
appArgs.add(arg);
argsI.remove();
}
}
}
}
aGradle.ext.appArgs = appArgs
Limites:
- J'ai été obligé d'utiliser «---» et non «-»
- Vous devez ajouter un script d'initialisation global
Si vous n'aimez pas le script d'initialisation global, vous pouvez le spécifier en ligne de commande
gradle -I init.gradle run --- f:/temp/x.xml
Ou mieux ajouter un alias à votre shell:
gradleapp run --- f:/temp/x.xml