【问题标题】:Gradle multi project - execute root task only onceGradle 多项目 - 只执行一次根任务
【发布时间】:2015-01-20 16:56:39
【问题描述】:

我正在使用以下项目结构 项目

---子项目1

---子项目2

---子项目3

|build.gradle

|settings.gradle

子项目 2 依赖于子项目 1

子项目 3 依赖于子项目 2

对于所有子项目,我需要有任务“构建”,这将为每个项目自定义。但是必须在“构建”之前执行一些初始化任务(所有子项目都相同)。问题是 - 这个初始化任务必须在构建期间执行一次且仅执行一次,无论我正在构建什么 - 根项目或任何子项目。 例如,如果我构建 Subproejct3,则序列必须如下: 在里面 构建子项目1 构建子项目2 构建子项目3

我尝试在根项目 build.gradle 中为“build”定义“doFirst”,并将“init”代码放入其中。但在这种情况下,在每个“构建”之前执行“init”代码。 我试图为每个“构建”定义对 root 的依赖,但面临与以前相同的问题。

【问题讨论】:

  • 你得到答案了吗?我也面临同样的问题。
  • 是的,就像 Radim 在下面写的一样。只需在“:”中添加来自rootproject任务的依赖项,它就可以工作

标签: gradle build.gradle


【解决方案1】:

这对于 Gradle 来说非常简单。定义您的 init 任务(可能在根项目中)并在您的子项目中自定义 build 任务以依赖此初始化,例如 build.dependsOn ':init' 更多详情http://www.gradle.org/docs/current/userguide/tutorial_using_tasks.html

顺便说一句:每个任务只能在构建开始时执行一次,因此您似乎已经使用 doFirst() 多次添加任务操作或将其添加到已执行的多个任务中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多