gradle multi-project:排序/依赖

时间:2014-03-27 17:19:47

标签: gradle android-gradle

我有一个包含许多子项目的多项目构建。

include ':common'
project( ':common' ).projectDir = new File( rootDir, 'android-common/common' )

include ':setup'
project( ':setup' ).projectDir = new File( rootDir, 'android-setup/setup' )
...

我想在主项目级别添加它们之间的排序(或依赖关系)。在上面的示例中,我希望common始终在setup之前构建。它似乎我想要做一些事情,比如获取对setup:compile的引用(或任何命名的构建任务)并添加一个额外的依赖项。像,

tasks[':setup'].dependsOn += tasks[':common:install']
显然这不起作用。这有可能吗?

编辑:更详细一点。 :common的结果是安装maven工件,然后由:setup使用。所以,它们之间的依赖性很软。但是,在我们典型的开发周期中,我们仍然希望首先构建:common

1 个答案:

答案 0 :(得分:2)

听起来像你想要使用项目依赖

project(':setup') {
   dependencies {
     compile project(':common')
   }
}

编辑:您似乎只想在父build.gradle中声明跨项目任务依赖项。

tasks.getByPath(":setup:compile").dependsOn(":common:install")

请注意,这将导致在该点评估/配置安装项目。如果由于某种原因导致问题,您可能希望使用评估侦听器

project("setup").afterEvaluate { setup -> setup.compile.dependsOn ":common:install }

进一步注意,如果要在此结构中独立构建安装项目,则必须使用-u命令行选项。