แน่นอนคำตอบข้างต้นทำงานได้ดี แต่ฉันก็ยังอยากจะใช้สิ่งที่ชอบ
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
ข้อ จำกัด :
- ฉันถูกบังคับให้ใช้ '---' ไม่ใช่ '-'
- คุณต้องเพิ่ม global init script
หากคุณไม่ชอบ global init script คุณสามารถระบุได้ในบรรทัดคำสั่ง
gradle -I init.gradle run --- f:/temp/x.xml
หรือดีกว่าเพิ่มนามแฝงในเชลล์ของคุณ:
gradleapp run --- f:/temp/x.xml