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

时间:2014-12-01 23:06:18

标签: java groovy gradle gradle-custom-plugin

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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