我正在尝试将很多参数传递给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。有没有更简单的方法 - 比如自动传递所有未解析的参数或更简单的东西?
可以通过StartParameter
对象从命令行访问项目属性。
因此,对于您的示例,您可以使用:
task foo(type: JavaExec) {
args gradle.startParameter.projectProperties.keySet().collect { "--$it" }
}
但是,这会将任何命令行项目属性添加到JavaExec
参数中。也许您可以考虑筛选具有特定前缀的属性。