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

Mar*_*ski 6 java groovy gradle gradle-custom-plugin

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

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

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

Inv*_*row 4

您可以使用tasks.withType(AbstractCompile)它返回所有源集(包括 Java、Groovy、Scala)的所有编译任务。test然后,您可以通过消除其他答案中建议的所有任务来对此进行过滤。

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

myTask.dependsOn tasks.withType(AbstractCompile).matching {
    !it.name.toLowerCase().contains("test")
}
Run Code Online (Sandbox Code Playgroud)