Tentu saja jawaban di atas semuanya melakukan pekerjaan itu, tetapi saya tetap ingin menggunakan sesuatu seperti
gradle run path1 path2
nah ini tidak bisa dilakukan, tapi bagaimana jika kita bisa:
gralde run --- path1 path2
Jika menurut Anda lebih elegan, maka Anda bisa melakukannya, triknya adalah memproses baris perintah dan memodifikasinya sebelum gradle melakukannya, ini dapat dilakukan dengan menggunakan skrip init
Skrip init di bawah ini:
- Proses baris perintah dan hapus --- dan semua argumen lain setelah '---'
- Tambahkan properti 'appArgs' ke gradle.ext
Jadi dalam tugas Anda (atau JavaExec, Exec) Anda dapat:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Skrip initnya adalah:
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
Batasan:
- Saya terpaksa menggunakan '---' dan bukan '-'
- Anda harus menambahkan beberapa skrip init global
Jika Anda tidak menyukai skrip init global, Anda dapat menentukannya di baris perintah
gradle -I init.gradle run --- f:/temp/x.xml
Atau lebih baik tambahkan alias ke shell Anda:
gradleapp run --- f:/temp/x.xml