groovy 使用ReplaceTokens的gradle,其中替换令牌是动态的

vx6bjr1n  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(114)

我在谷歌上搜索了一下,但我不确定我想做的事情是否可以完成。我正在使用gradle,我有几个包含一些配置的模板文件。我希望有一个任务,基本上可以替换这些文件,其中包含具有特定值的令牌。我唯一的观点是,令牌是动态的,应该从文件中检索。
所以它会是这样的:

import org.apache.tools.ant.filters.ReplaceTokens

tasks.register('demoPlaceholders', Copy)  {
    from 'config-sets'
    into 'config-sets'
    include '**/*.template'
    rename '(.+).template', '$1'
    filter(ReplaceTokens, tokens:"placeholders.txt")
    filteringCharset = 'UTF-8'
}

基本上,我尝试使用参数replacefilterfile https://ant.apache.org/manual/Tasks/replace.html执行与ant中相同的替换任务
有什么想法可以做到这一点吗?目前,它只是不替换任何东西,但正在做我需要的一切,只是不知道如何应用replaceToken方面
我找不到这个问题的副本,如果它只是在谷歌失败,从我的一部分,我很抱歉。

ttisahbt

ttisahbt1#

我想一定有更好的答案,但这似乎对我有效:

ext {
    placeholderFile = "dummy/placeholders.txt"
    filterTokens = getFilterTokens()
}

Map<String, String> getFilterTokens () {
    Map<String, String> tokens = new HashMap<>()
    new File(project.ext.placeholderFile.toString()).eachLine {
        if (it.contains("@")) {
            String[] split = it.split("=")
            String key = split[0].replaceAll("@","")
            String value = split[1]
            tokens.put(key, value)
        }
    }
    return tokens
}

import org.apache.tools.ant.filters.ReplaceTokens

tasks.register('demoPlaceholders', Copy)  {
    from 'config-sets'
    into 'config-sets'
    include '**/*.template'
    rename '(.+).template', '$1'
    filter(ReplaceTokens, tokens:project.ext.filterTokens)
    filteringCharset = 'UTF-8'
}

相关问题