7

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

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

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

4

2 回答 2

4

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

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

myTask.dependsOn tasks.withType(AbstractCompile).matching {
    !it.name.toLowerCase().contains("test")
}
于 2014-12-02T08:52:37.763 回答
1

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

于 2014-12-02T10:32:55.940 回答