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