Oczywiście odpowiedzi przede wszystkim działają, ale nadal chciałbym użyć czegoś takiego
gradle run path1 path2
cóż, nie da się tego zrobić, ale co, jeśli możemy:
gralde run --- path1 path2
Jeśli uważasz, że jest bardziej elegancki, możesz to zrobić, sztuka polega na przetworzeniu wiersza poleceń i zmodyfikowaniu go przed wykonaniem gradle, można to zrobić za pomocą skryptów inicjujących
Poniższy skrypt startowy:
- Przetwórz wiersz poleceń i usuń --- oraz wszystkie inne argumenty następujące po znaku „---”
- Dodaj właściwość „appArgs” do gradle.ext
Więc w zadaniu uruchamiania (lub JavaExec, Exec) możesz:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Skrypt startowy to:
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
Ograniczenia:
- Byłem zmuszony użyć „---”, a nie „-”
- Musisz dodać globalny skrypt startowy
Jeśli nie lubisz globalnego skryptu init, możesz go określić w linii poleceń
gradle -I init.gradle run --- f:/temp/x.xml
Lub lepiej dodaj alias do swojej powłoki:
gradleapp run --- f:/temp/x.xml