Por supuesto, las respuestas sobre todo hacen el trabajo, pero aún así me gustaría usar algo como
gradle run path1 path2
bueno, esto no se puede hacer, pero ¿y si podemos:
gralde run --- path1 path2
Si crees que es más elegante, entonces puedes hacerlo, el truco es procesar la línea de comando y modificarla antes de que gradle lo haga, esto se puede hacer usando scripts de inicio
El guión de inicio a continuación:
- Procese la línea de comando y elimine --- y todos los demás argumentos después de '---'
- Agregue la propiedad 'appArgs' a gradle.ext
Entonces, en su tarea de ejecución (o JavaExec, Exec) puede:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
El guión de inicio es:
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
Limitaciones:
- Me vi obligado a usar '---' y no '-'
- Tienes que agregar un script de inicio global
Si no le gusta el guión de inicio global, puede especificarlo en la línea de comando
gradle -I init.gradle run --- f:/temp/x.xml
O mejor agregue un alias a su shell:
gradleapp run --- f:/temp/x.xml