Конечно, ответы, прежде всего, делают свою работу, но все же я хотел бы использовать что-то вроде
gradle run path1 path2
ну, это невозможно, но что, если мы сможем:
gralde run --- path1 path2
Если вы думаете, что это более элегантно, тогда вы можете это сделать, трюк состоит в том, чтобы обработать командную строку и изменить ее до того, как это сделает gradle, это можно сделать с помощью сценариев инициализации
Скрипт инициализации ниже:
- Обработайте командную строку и удалите --- и все остальные аргументы, следующие за '---'
- Добавьте свойство appArgs в gradle.ext
Итак, в вашей задаче запуска (или JavaExec, Exec) вы можете:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Сценарий инициализации:
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
Ограничения:
- Меня заставили использовать '---', а не '-'
- Вам нужно добавить глобальный скрипт инициализации
Если вам не нравится глобальный скрипт инициализации, вы можете указать его в командной строке
gradle -I init.gradle run --- f:/temp/x.xml
Или лучше добавить псевдоним в свою оболочку:
gradleapp run --- f:/temp/x.xml