首页 > 解决方案 > gradle:在一些嵌套子项目之间共享变量

问题描述

考虑以下项目结构

根
  |-build.gradle
  |-子项目1
  | |-SubProj1A
  | | |-build.gradle
  | |-SubProj1B
  | | |-build.gradle
  |-子项目2
        |-SubProj2A
        | |-build.gradle
        |-SubProj2B
        | |-build.gradle

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

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

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

标签: gradle

解决方案


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

推荐阅读