Gradle - 使"组装"取决于所有项目的"清洁"

Mal*_*alt 2 java jar war gradle

我有几个用gradle构建的不相关的Java项目,其中一些被组装成一个jar文件,另一些被组装成一个文件war.

我希望assemble所有项目的任务都依赖于clean任务,因为我们遇到了各种旧类从构建文件夹缓存进入组装的jar/wars的问题.有没有办法做到这一点,而不是添加assemble.dependsOn clean到每一个build.gradle

tdd*_*key 7

您可以使用./gradle/init.gradle脚本中的全局钩子来处理此问题.你放在那里的任何东西都会在每次构建时执行.

为了避免在没有汇编任务的项目上出现故障,您还需要一个过滤器,如下所示:

allprojects {
    tasks.whenTaskAdded { theTask ->
        if (theTask.name.equals('assemble')) {
            theTask.dependsOn clean
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做是将一个块应用于定义的所有项目(allproject).当添加每个任务时,这将运行,并且当assemble添加具有该名称的任务时,将添加依赖项clean.