You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gradle.properties文件内部引用已定义的属性值

gradle.properties值复用解决方案

Gradle原生不支持gradle.properties文件内部的键值自引用,你尝试的${name}、$name写法无法直接生效属于预期情况,可通过以下两种常用方案实现需求:

方案1:构建脚本内组合值(推荐)

不需要调整gradle.properties里的基础配置,直接在构建脚本中完成值的组合,适配性最高:

Groovy语法(build.gradle)示例:

// 读取gradle.properties中定义的基础值
def baseName = project.property('name')
// 组合生成新值存入扩展属性,全项目可复用
ext.place = "${baseName}-1234"

// 后续使用时直接引用即可
println place // 输出结果为xyz-1234

Kotlin语法(build.gradle.kts)示例:

val baseName = project.property("name") as String
extra["place"] = "$baseName-1234"

// 使用方式
println(extra["place"])

如果需要多模块共享组合后的值,把上述逻辑放到根目录build.gradle的subprojects配置块中即可。

方案2:自定义解析支持gradle.properties内占位符

如果希望所有配置都保留在gradle.properties文件中,可以在构建脚本开头增加自定义解析逻辑,支持文件内的${变量名}占位符:

// 放在build.gradle最顶部,优先执行
def properties = new Properties()
file('gradle.properties').withInputStream { properties.load(it) }
properties.forEach { key, value ->
    def resolvedVal = value.replaceAll(/\$\{(\w+)}/) { matcher, varKey ->
        properties.getProperty(varKey, matcher)
    }
    ext.set(key as String, resolvedVal)
}

添加该逻辑后,你示例中的place=${name}-1234写法就可以正常生效,直接通过project.property("place")就能拿到解析后的完整值。

内容的提问来源于stack exchange,提问作者TheUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:24:02