建.自动将未解析的参数传递给 Gradle 中的 JavaExec 类型任务?



我正在尝试将很多参数传递给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参数中。也许您可以考虑筛选具有特定前缀的属性。

最新更新