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

Java 如何依赖Gradle中的所有*compile和*testCompile任务,java,groovy,gradle,gradle-custom-plugin,Java,Groovy,Gradle,Gradle Custom Plugin,我希望插件中有一个任务依赖于所有源集中所有生产类(Java、Groovy、Scala)的编译,第二个任务依赖于所有源集中所有测试类的编译(可能是单独的test和integrationTest) 我不想依赖于*类任务,因为*类任务应该依赖于animalSniffer任务(编译后检测Java版本API不兼容,可以停止构建) Gradle中有没有比检查AbstractCompile任务名称的实例是否以“compileTest”开头更好的方法呢?您可以使用tasks.withType(AbstractC

我希望插件中有一个任务依赖于所有源集中所有生产类(Java、Groovy、Scala)的编译,第二个任务依赖于所有源集中所有测试类的编译(可能是单独的
test
integrationTest

我不想依赖于
*类
任务,因为
*类
任务应该依赖于
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
(不区分大小写)是最好的解决方案。

谢谢您的回复,但是,正如我在第一句话中提到的,我需要区分在我的两个不同任务中使用的生产测试和测试编译测试。因此,我的建议是除了任务类型检查之外,还要检查任务名称,但我更喜欢更优雅的解决方案。编译测试->编译任务我错过了那部分。已编辑我的答案以筛选任务以删除所有以“测试”开头的任务。希望这会有所帮助。不幸的是,我希望有一种比问题解决方案中提到的更好的方法,使用AbstractCompile并检查名称。无论如何,谢谢你的答案和一个代码片段-将是有用的人在未来寻找它。感谢彼得的澄清。