Gradle模块执行顺序

时间:2013-07-26 20:23:40

标签: module dependencies gradle dependency-management

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

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

在A结束时,有一个install任务被调用,这将使归档可用于B,但是install任务在 all 模块构建。

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

如何设置它以便模块B完全等待模块A完成?

1 个答案:

答案 0 :(得分:2)

  

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

订单无关紧要。

  

在A结束时,会调用一个安装任务,使存档可用于B

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

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

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

很可能一个构建脚本存在问题,即它在配置阶段中工作,应该在执行阶段中完成。

  

如何设置它以便模块B完全等待模块A完成?

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