Natürlich machen die Antworten vor allem den Job, aber trotzdem würde ich gerne so etwas verwenden
gradle run path1 path2
Nun, das geht nicht, aber was ist, wenn wir können:
gralde run --- path1 path2
Wenn Sie der Meinung sind, dass es eleganter ist, können Sie es tun. Der Trick besteht darin, die Befehlszeile zu verarbeiten und zu ändern, bevor gradle dies tut. Dies kann mithilfe von Init-Skripten erfolgen
Das Init-Skript unten:
- Verarbeiten Sie die Befehlszeile und entfernen Sie --- und alle anderen Argumente nach '---'
- Fügen Sie gradle.ext die Eigenschaft 'appArgs' hinzu
In Ihrer Ausführungsaufgabe (oder JavaExec, Exec) können Sie also:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Das Init-Skript lautet:
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
Einschränkungen:
- Ich war gezwungen, '---' und nicht '-' zu verwenden.
- Sie müssen ein globales Init-Skript hinzufügen
Wenn Ihnen das globale Init-Skript nicht gefällt, können Sie es in der Befehlszeile angeben
gradle -I init.gradle run --- f:/temp/x.xml
Oder fügen Sie Ihrer Shell besser einen Alias hinzu:
gradleapp run --- f:/temp/x.xml