如何依赖 Gradle 中的所有 *compile 和 *testCompile 任务



我希望在animalSniffer插件中有一个任务依赖于所有sourceSets中所有生产类(Java,Groovy,Scala)的编译,第二个任务依赖于所有sourceSets中所有测试类的编译(可能是单独的testintegrationTest)。

我不想依赖*classes任务,因为*classes任务应该依赖于animalSniffer任务(编译后检测 Java 版本 API 不兼容并可以停止构建)。

在 Gradle 中,有没有比检查任务名称AbstractCompile实例是否以"compileTest"开头更好的方法来实现这一点?

您可以使用

tasks.withType(AbstractCompile)返回所有源代码集(包括Java,Groovy,Scala)的所有编译任务。然后,您可以通过消除test的所有任务来对此进行筛选,如其他答案中所建议的那样。

对于依赖于所有这些的特定任务,您可以执行以下操作:

myTask.dependsOn tasks.withType(AbstractCompile).matching {
    !it.name.toLowerCase().contains("test")
}

如果需要区分生产和测试编译任务/源代码集,检查名称是否包含test(不区分大小写)是可用的最佳解决方案。

最新更新