Gradle - 使用ReplaceTokens时更改开始/结束标记

vic*_*csz 14 gradle

我有一些文件需要令牌替换..而不是默认的单@,他们使用双@的...所以我需要的东西像:@@ replaceme @@ ..替换.

Ant的ReplaceTokens过滤器允许您使用BeginToken/EndToken设置它.虽然我不知道如何在我的示例中配置它:

copy{ 
  into something
  from somethingelse
  filter(ReplaceTokens, tokens: [])  
}
Run Code Online (Sandbox Code Playgroud)

如何更改上面的代码以正确替换使用double @@ tokens而不是单个?

Pet*_*ser 13

这很容易改变分隔符-只需添加一个名为参数beginToken,并endTokenfilter方法调用.但是,Ant ReplaceTokens只支持单字符分隔符.快速Web搜索没有出现FilterReader支持任意多字符分隔符的Ant .另一种方法是自己编写代码,方法是实现FilterReader或使用自由格式过滤器方法.

  • 很好..错过了对非单字符分隔符的支持,这可能是我的代码无效的原因. (2认同)

sum*_*n j 11

我处于类似(不精确)的情况.必须处理maven格式的测试属性资源.即'$ {}'格式.

当我移动到gradle时,processTestResources任务没有替换$ {}中的值.这是因为它使用'@'单个字符分隔的相同原因.我找到了实现我想要的黑客.

configure(tasks.processTestResources) {
    include '**/*.properties'
    filter(ReplaceTokens,
            tokens: ['$':'={'], beginToken : '=', endToken : '{')
    filter(ReplaceTokens,
            tokens: [project.properties], beginToken : '{', endToken : '}')
}
Run Code Online (Sandbox Code Playgroud)


Pat*_* M. 7

其他答案似乎是旧的,并报告您不能使用多字符令牌分隔符.但我发现Gradle 2.14.1不再是这种情况了

copy{ 
  into something
  from somethingelse
  filter(ReplaceTokens, tokens: [map], beginToken : '@@', endToken : '@@')
  // or, maven prop stle:
  // filter(ReplaceTokens, tokens: [map], beginToken : '${', endToken : '}')

}
Run Code Online (Sandbox Code Playgroud)