Claro que as respostas acima de tudo fazem o trabalho, mas ainda assim eu gostaria de usar algo como
gradle run path1 path2
bem, isso não pode ser feito, mas e se pudermos:
gralde run --- path1 path2
Se você acha que é mais elegante, pode fazê-lo, o truque é processar a linha de comando e modificá-la antes do gradle, isso pode ser feito usando scripts init
O script init abaixo:
- Processe a linha de comando e remova --- e todos os outros argumentos após '---'
- Adicione a propriedade 'appArgs' a gradle.ext
Portanto, na sua tarefa de execução (ou JavaExec, Exec), você pode:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
O script 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
Limitações:
- Fui forçado a usar '---' e não '-'
- Você precisa adicionar algum script init global
Se você não gosta do script init global, pode especificá-lo na linha de comando
gradle -I init.gradle run --- f:/temp/x.xml
Ou melhor, adicione um alias ao seu shell:
gradleapp run --- f:/temp/x.xml