当然,最重要的是答案可以解决问题,但我仍然想使用类似
gradle run path1 path2
好吧,这不可能完成,但是如果可以的话:
gralde run --- path1 path2
如果您认为它更优雅,则可以这样做,诀窍是在gradle之前处理命令行并对其进行修改,这可以通过使用init脚本来完成
下面的初始化脚本:
- 处理命令行并删除---和'---'之后的所有其他参数
- 将属性'appArgs'添加到gradle.ext
因此,在您的运行任务(或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