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

时间:2012-04-25 19:04:32

标签: gradle

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

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

copy{ 
  into something
  from somethingelse
  filter(ReplaceTokens, tokens: [])  
}

如何更改上述代码以正确替换双@@令牌而不是单个?

3 个答案:

答案 0 :(得分:12)

更改分隔符很容易 - 只需将命名参数beginTokenendToken添加到filter方法调用中即可。但是,Ant的ReplaceTokens仅支持单字符分隔符。快速Web搜索没有出现支持任意多字符分隔符的Ant FilterReader。另一种方法是自行编码,方法是实施FilterReader或使用自由格式的filter方法。

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:6)

其他答案似乎很旧并且报告您无法使用多字符令牌分隔符。但我发现使用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 : '}')

}