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

时间:2017-07-02 02:25:59

标签: gradle build.gradle

我试图将大量参数传递给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。有没有更简单的方法 - 比如自动传递所有未解析的参数或更简单的东西?

1 个答案:

答案 0 :(得分:1)

您可以通过StartParameter对象从命令行访问项目属性。

因此,对于您的示例,您可以使用:

task foo(type: JavaExec) {
    args gradle.startParameter.projectProperties.keySet().collect { "--$it" }
}

但是,这会将任何命令行项目属性添加到JavaExec args。也许你可以考虑过滤具有特定前缀的属性。