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

Gradle已弃用命令expand的替代方案咨询

Gradle已弃用命令expand的替代方案咨询

嘿,我之前在Spring Boot项目里用Gradle构建时,也碰到过expand方法被标记为弃用的情况,刚好可以给你分享下官方推荐的替代方案,亲测好用~

你之前的代码是这样的对吧?通过processResources把项目版本注入到application.yml的$buildVersion占位符里:

processResources {
    filesMatching('application.yml') {
        expand([buildVersion: project.version]) // Match the placeholder in application.yml ($buildVersion).
    }
}

现在expand被弃用后,Gradle官方推荐使用Ant的ReplaceTokens过滤器来实现同样的需求,而且这个方式更安全,不会像expand那样误处理文件里的其他Groovy表达式格式内容。

方案1:使用默认分隔符(推荐)

如果你能修改application.yml里的占位符格式,改成@buildVersion@,可以用下面的代码:

processResources {
    filesMatching('application.yml') {
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [buildVersion: project.version])
    }
}

方案2:保留原有的$占位符

要是不想改application.yml里的$buildVersion,可以手动指定分隔符为$,代码如下:

processResources {
    filesMatching('application.yml') {
        filter(org.apache.tools.ant.filters.ReplaceTokens,
            beginToken: '$',
            endToken: '$',
            tokens: [buildVersion: project.version]
        )
    }
}

这个替换方式的优势很明显:ReplaceTokens只会精准替换你指定的变量,不像原来的expand会把文件里所有${xxx}格式的内容都当作Groovy表达式解析,能避免很多意外替换的坑,稳定性拉满。

备注:内容来源于stack exchange,提问作者Socrates

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:53:00