3

我有一个带有两个模块的 gradle 项目。

第一个模块 (A) 生成第二个模块 (B) 使用的存档。我已经定义了settings.gradle文件,以便在 B 之前看到 A。

在 A 结束时,有一个install任务被调用,它将使档案可用于 B,但是该任务在所有模块构建install之前不会执行。

当我使用 A 的构建文件或设置构建命令-p时,它仍然会尝试查找项目 B 的依赖项。我不想这样做!

我该如何设置,以便模块 B 将完全等待模块 A 完成?

4

1 回答 1

2

我已经定义了 settings.gradle 文件,以便在 B 之前看到 A。

顺序在这里并不重要。

在 A 结束时,有一个安装任务被调用,它将使档案可用于 B

处理这个问题的正确方法是通过项目依赖使 A 的输出对 B 可用。在最简单的情况下,Bbuild.gradle将包含以下内容:

dependencies {
    compile project(":A") // could be something other than 'compile'
}

当我使用 A 的构建文件,或设置构建命令 -p 时,它仍然会尝试查找项目 B 的依赖项。

您的某个构建脚本很可能存在问题,即它确实在配置阶段工​​作,而应该在执行阶段完成。

我该如何设置,以便模块 B 将完全等待模块 A 完成?

没有什么好办法。Gradle 执行任务图,而不是项目列表。只要任务依赖正确,前者就没有缺点,只有优点。通常,Gradle 可以自动找出任务依赖关系(尤其是项目之间)。

于 2013-07-26T20:33:11.210 回答