我有一些文件需要令牌替换..而不是默认的单@,他们使用double @的...所以我需要的东西:@@ replaceme @@ ..替换。
Ant的ReplaceTokens过滤器允许你使用BeginToken / EndToken设置它。虽然我不知道如何在我的例子中配置它:
copy{
into something
from somethingelse
filter(ReplaceTokens, tokens: [])
}
如何更改上述代码以正确替换双@@令牌而不是单个?
答案 0 :(得分:12)
更改分隔符很容易 - 只需将命名参数beginToken
和endToken
添加到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 : '}')
}