Gradle-使用替换令牌时更改开始/结束令牌
我有一些文件需要替换令牌。。而不是默认的单@,它们使用双@。。。所以我需要像这样的东西:@@replaceme@@@。。替换 Ant的ReplaceTokens筛选器允许您使用BeginToken/EndToken进行设置。。虽然我不确定如何在我的示例中配置它:Gradle-使用替换令牌时更改开始/结束令牌,gradle,Gradle,我有一些文件需要替换令牌。。而不是默认的单@,它们使用双@。。。所以我需要像这样的东西:@@replaceme@@@。。替换 Ant的ReplaceTokens筛选器允许您使用BeginToken/EndToken进行设置。。虽然我不确定如何在我的示例中配置它: copy{ into something from somethingelse filter(ReplaceTokens, tokens: []) } 如何更改上述代码以正确使用双@标记替换单标记?更改分隔符很容易-
copy{
into something
from somethingelse
filter(ReplaceTokens, tokens: [])
}
如何更改上述代码以正确使用双@标记替换单标记?更改分隔符很容易-只需将命名参数
beginToken
和endToken
添加到筛选器
方法调用中即可。但是,Ant的replaceToken
仅支持单字符分隔符。快速web搜索没有找到支持任意多字符定界符的AntFilterReader
。另一种方法是自己编写代码,要么实现FilterReader
,要么使用自由格式方法。我也遇到过类似(不确切)的情况。必须处理maven格式的测试属性资源。i、 e'${}'格式
当我转到gradle时,processTestResources任务没有替换${}中的值。这与它使用“@”单字符分隔的原因相同。我找到了一种方法来实现我想要的
configure(tasks.processTestResources) {
include '**/*.properties'
filter(ReplaceTokens,
tokens: ['$':'={'], beginToken : '=', endToken : '{')
filter(ReplaceTokens,
tokens: [project.properties], beginToken : '{', endToken : '}')
}
这是另一个解决方案。使用Ant复制任务而不是Gradle复制任务
task copyWithMultiCharTokenMark << {
ant.copy(todir: 'copy_into_dir') {
fileset(dir: 'copy_from_dir')
filterset(begintoken:'@@', endtoken:'@@') {
filter( token:'replaceme', value:'Am I replaced?')
}
}
}
task copyWithMultiCharTokenMark其他答案似乎很旧,并且报告您不能使用多字符标记分隔符。但我发现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 : '}')
}
美好的错过了对非单字符分隔符的支持,这可能就是我的代码不起作用的原因。完全是hack-y,完全有效!我正在使用/*@TOKEN@*/格式化的令牌,以便它们在CSS/JS中的任何地方都有效,下面的技巧是:过滤器(org.apache.tools.ant.filters.ReplaceTokens,令牌:['*':'@'],beginToken:'/',endToken:'@')
过滤器(org.apache.tools.ant.filters.ReplaceTokens,令牌:['*':'@',endToken:'/']
这应该是可以接受的答案,因为无论哪个版本进行了允许非单字符delimeters的更改!