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
.
添加依赖项
我有几个不相关的 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
.