물론 위의 답변은 모두 작업을 수행하지만 여전히 다음과 같은 것을 사용하고 싶습니다.
gradle run path1 path2
글쎄, 이것은 할 수 없지만 우리가 할 수 있다면 어떨까요?
gralde run --- path1 path2
더 우아하다고 생각되면 할 수 있습니다. 트릭은 명령 줄을 처리하고 gradle이 수행하기 전에 수정하는 것입니다.이 작업은 init 스크립트 를 사용하여 수행 할 수 있습니다.
아래의 초기화 스크립트 :
- 명령 줄을 처리하고 --- 및 '---'뒤에 오는 다른 모든 인수를 제거합니다.
- gradle.ext에 속성 'appArgs'추가
따라서 실행 작업 (또는 JavaExec, Exec)에서 다음을 수행 할 수 있습니다.
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
초기화 스크립트는 다음과 같습니다.
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
제한 사항 :
- 나는 '-'가 아니라 '---'를 사용해야했습니다.
- 전역 초기화 스크립트를 추가해야합니다.
전역 초기화 스크립트가 마음에 들지 않으면 명령 줄에서 지정할 수 있습니다.
gradle -I init.gradle run --- f:/temp/x.xml
또는 셸에 별칭을 추가하는 것이 좋습니다.
gradleapp run --- f:/temp/x.xml