我试图将大量参数传递给Gradle中的JavaExec任务。现在我正在做类似的事情:
task foo(type: JavaExec) {
if (project.hasProperty('prop1')) {
args += ["--prop1"]
}
if (project.hasProperty('foo2')) {
args += ["--foo3"]
}
...
if (project.hasProperty('flagn')) {
args += ["--flagn"]
}
}
然后当我执行此操作时,我会执行./gradlew :foo -Pprop1 -Pfoo2 ... -Pflagn
之类的操作。这有效,但实际上很乏味,因为我需要将相同的字符串参数从Gradle传递给JVM。有没有更简单的方法 - 比如自动传递所有未解析的参数或更简单的东西?
答案 0 :(得分:1)
您可以通过StartParameter
对象从命令行访问项目属性。
因此,对于您的示例,您可以使用:
task foo(type: JavaExec) {
args gradle.startParameter.projectProperties.keySet().collect { "--$it" }
}
但是,这会将任何命令行项目属性添加到JavaExec
args。也许你可以考虑过滤具有特定前缀的属性。