gradle:在一些嵌套子项目之间共享变量

时间:2019-04-30 11:34:37

标签: gradle

请考虑以下项目结构

Root
  |-build.gradle
  |-SubProj1
  |      |-SubProj1A
  |      |    |-build.gradle
  |      |-SubProj1B
  |      |    |-build.gradle
  |-SubProj2
        |-SubProj2A
        |    |-build.gradle
        |-SubProj2B
        |    |-build.gradle

所有子项目都依赖于Somelib,但版本不同:

Subprojects under SubProj1 -- version 1.1  
Subprojects under SubProj2 -- version 2.2    

所以问题是如何将变量someVersion=1.1传递给SubProj1下的子项目,并将someVersion=2.2传递给SubProj2下的子项目?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是在根SubProj1文件中声明子项目SubProj2build.gradle的版本变量。例如这样的

subprojects.findAll { subproject -> subproject.name.equals('SubProj1') }
        .each {subproject -> subproject.ext.libVersion = '1.1'}

subprojects.findAll { subproject -> subproject.name.equals('SubProj2') }
        .each {subproject -> subproject.ext.libVersion = '1.2'}

,然后可以在与SubProj1A相同级别的子项目中获得它,如下所示:

project.parent.ext.libVersion