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
相关产品推荐
相关产品推荐

