Tất nhiên các câu trả lời trên tất cả đều thực hiện công việc, nhưng tôi vẫn muốn sử dụng một cái gì đó như
gradle run path1 path2
tốt, điều này không thể được thực hiện, nhưng nếu chúng ta có thể:
gralde run --- path1 path2
Nếu bạn nghĩ rằng nó thanh lịch hơn, thì bạn có thể làm điều đó, mẹo là xử lý dòng lệnh và sửa đổi nó trước khi phân lớp, điều này có thể được thực hiện bằng cách sử dụng init script
Kịch bản init bên dưới:
- Xử lý dòng lệnh và xóa --- và tất cả các đối số khác theo sau '---'
- Thêm thuộc tính 'appArss' vào gradle.ext
Vì vậy, trong tác vụ chạy của bạn (hoặc JavaExec, Exec), bạn có thể:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Kịch bản init là:
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
Hạn chế:
- Tôi đã buộc phải sử dụng '---' chứ không phải '-'
- Bạn phải thêm một số tập lệnh init toàn cầu
Nếu bạn không thích tập lệnh init toàn cầu, bạn có thể chỉ định nó trong dòng lệnh
gradle -I init.gradle run --- f:/temp/x.xml
Hoặc tốt hơn là thêm một bí danh vào vỏ của bạn:
gradleapp run --- f:/temp/x.xml