如何通过所有项目找到某种类型的任务?

时间:2018-04-23 15:49:05

标签: java gradle

我有一个使用Gradle构建的多构建Java项目。

隐藏非法反射访问警告我想在几个项目中找到JavaExec和Test任务,并提供所需的JVM参数。我想将它应用于root build.gradle中的所有项目,而不是将它们添加到每个项目中。

如何在所有项目中找到某种特定类型的任务?

我的初始尝试使用withType但是我想删除重复这个重复的JavaExec和Test任务类型。见下文:

尝试#1

allprojects {
  repositories {
    jcenter()
  }

  afterEvaluate {
    project.tasks.withType(JavaExec) {
       it.jvmArgs "--add-opens=java.base/java.lang=ALL-UNNAMED"
    }

    project.tasks.withType(Test) {
        it.jvmArgs "--add-opens=java.base/java.lang=ALL-UNNAMED"
    }
  }
}

subprojects {
  version = "0.0.1-SNAPSHOT"
}

1 个答案:

答案 0 :(得分:2)

试试这个:

afterEvaluate {
    [JavaExec, Test].each {
        project.tasks.withType(it) {
            it.jvmArgs "--add-opens=java.base/java.lang=ALL-UNNAMED"
        }
    }
}