Ovviamente le risposte fanno soprattutto il lavoro, ma comunque vorrei usare qualcosa di simile
gradle run path1 path2
beh, questo non può essere fatto, ma cosa succede se possiamo:
gralde run --- path1 path2
Se pensi che sia più elegante, allora puoi farlo, il trucco è elaborare la riga di comando e modificarla prima che lo faccia gradle, questo può essere fatto usando script di inizializzazione
Lo script di inizializzazione di seguito:
- Elabora la riga di comando e rimuovi --- e tutti gli altri argomenti che seguono '---'
- Aggiungi la proprietà 'appArgs' a gradle.ext
Quindi nella tua attività di esecuzione (o JavaExec, Exec) puoi:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Lo script di inizializzazione è:
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
limitazioni:
- Sono stato costretto a usare "---" e non "-"
- Devi aggiungere qualche script di inizializzazione globale
Se non ti piace lo script di inizializzazione globale, puoi specificarlo nella riga di comando
gradle -I init.gradle run --- f:/temp/x.xml
O meglio aggiungi un alias alla tua shell:
gradleapp run --- f:/temp/x.xml