Java Gradle-make“;集合;依靠;“干净”;适用于所有项目

Java Gradle-make“;集合;依靠;“干净”;适用于所有项目,java,gradle,jar,war,Java,Gradle,Jar,War,我用gradle构建了几个不相关的Java项目,其中一些组装到jar文件中,另一些组装到war中 我希望所有项目的assembly任务都依赖于clean任务,因为我们遇到了各种旧类从构建文件夹缓存进入组装的jar/war的问题。是否有一种方法可以做到这一点,而无需将assembly.dependsOn clean添加到每个build.gradle submodules { assemble.dependsOn clean } 这将dependsOn应用于每个子项目您可以在/gradle/

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


我希望所有项目的
assembly
任务都依赖于
clean
任务,因为我们遇到了各种旧类从构建文件夹缓存进入组装的jar/war的问题。是否有一种方法可以做到这一点,而无需将
assembly.dependsOn clean
添加到每个
build.gradle

submodules {
   assemble.dependsOn clean
}

这将
dependsOn
应用于每个子项目

您可以在
/gradle/init.gradle
脚本中使用全局钩子处理此问题。在那里输入的任何内容都会在每个构建中执行

为了避免在没有组装任务的项目上失败,您还需要一个过滤器,类似于以下的东西将起作用:

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

这样做的目的是将块应用于所有定义的项目(
allproject
)。当添加每个任务时,它将运行,当添加名为
assembly
的任务时,依赖项将添加到
clean

中,您可以向init.gradle添加一些内容,因此每次调用gradle时它都适用。OP声明它们是/不相关的/项目