Gradle - 使所有项目的 "assemble" 依赖于 "clean"

Gradle - make "assemble" depend on "clean" for all projects

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

我希望所有项目的 assemble 任务都依赖于 clean 任务,因为我们遇到了各种旧的 类 进入组装 jars/wars 的问题] 来自构建文件夹缓存。有没有一种方法可以在不向每个 build.gradle 添加 assemble.dependsOn clean 的情况下做到这一点?

从你的最高级别build.gradle

submodules {
   assemble.dependsOn clean
}

这会将 dependsOn 应用于每个子项目

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

为了避免没有 assemble 任务的项目失败,您还需要一个过滤器,像下面这样的东西会起作用:

allprojects {
    tasks.whenTaskAdded { theTask ->
        if (theTask.name.equals('assemble')) {
            theTask.dependsOn clean
        }
    }
}

这是在对所有已定义的项目 (allproject) 应用块。添加每个任务时,这将 运行,当添加名称为 assemble 的任务时,将向 clean.

添加依赖项