如何在settings.gradle中访问build.gradle定义的ext变量
Gradle settings.gradle读取build.gradle定义的ext变量失效解决方案
Gradle构建生命周期的初始化阶段会优先加载
settings.gradle,完成项目结构识别后才会解析根目录及子项目的build.gradle文件。你在根项目build.gradle中定义的ext变量属于配置阶段才会生成的属性,初始化阶段还不存在,因此所有读取尝试都会失效。
方案1:使用gradle.properties定义全局属性(推荐)
gradle.properties中的属性会在初始化阶段最开始被加载,可同时在settings.gradle和所有build.gradle中直接访问,适合管理全局版本号这类需要多处复用的配置:
- 在项目根目录新建/编辑
gradle.properties,添加配置:
foo=myVersion
- 调整
settings.gradle中的插件引用写法:
plugins { id("myPlugin").version(foo) // 字符串拼接场景也可写为 version("${foo}") }
方案2:直接在settings.gradle中定义ext变量
如果该变量仅需要在settings.gradle中使用,可直接在settings文件头部定义ext属性:
// settings.gradle头部定义 ext { foo = "myVersion" } plugins { id("myPlugin").version(foo) }
后续根项目build.gradle如果需要使用这个变量,可以通过settings.ext.foo读取。
内容的提问来源于stack exchange,提问作者JJ36
相关产品推荐
相关产品推荐

