我希望在animalSniffer插件中有一个任务依赖于所有sourceSets中所有生产类(Java,Groovy,Scala)的编译,第二个任务依赖于所有sourceSets中所有测试类的编译(可能是单独的test
和integrationTest
)。
我不想依赖*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
(不区分大小写)是可用的最佳解决方案。