【问题标题】:How to depend on all *compile and *testCompile tasks in Gradle如何依赖 Gradle 中的所有 *compile 和 *testCompile 任务
【发布时间】:2014-12-01 23:06:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: java groovy gradle gradle-custom-plugin


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复,但正如我在第一句话中提到的,我需要区分 productiontest 编译测试以用于我的两个不同的任务。因此我的建议是除了AbstractCompile 任务类型检查任务名称,但我更喜欢更优雅的解决方案。
    • 编译测试->编译任务
    • 对不起,我错过了那部分。已编辑我的答案以过滤任务以删除所有以“测试”开头的任务。希望对您有所帮助。
    • 不幸的是,我希望有比使用 AbstractCompile 的问题解决方案中提到的更好的方法并检查名称。无论如何,感谢您使用代码 sn-p 的答案 - 对将来寻找它的人很有用。
    【解决方案2】:

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

    【讨论】:

    • 感谢彼得的澄清。
    猜你喜欢
    • 2016-10-15
    • 2016-02-19
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多