我有一个包含许多子项目的多项目构建。
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
。
答案 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命令行选项。