2017-05-26 393 views
0

我想用一些属性来扩展一个gradle/groovy模板,并且该文件包含一个正则表达式。我需要以某种方式逃避它,但我不想修改该文件。我也不想在内存中加载文件。在gradle模板中使用正则表达式

我有这样的事情:

<string> ${MY_VAR}</string> 
<string>^[[email protected]]{6,16}$</string> 
<string>((?=.*\d)(?!.*\s)(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$%^&amp;*()_+~]).{8,12})</string> 
<string> ${MY_VAR}</string> 

和文字

copy { 
    Properties props = getProps() 
    from(source) 
    into(dest) 
    expand props 
} 

我想换成变量和正则表达式保持不变。

任何想法?谢谢

+0

我发现,使用从蚂蚁ReplaceTokens和改变变量@ MY_VAR @作品。如果没有其他方法,这将是我最后的解决方案,因为如果涉及更改文件 –

回答

1

expand使用Groovy的SimpleTemplateEngine这意味着你可以使用完整的groovy语法,但你也必须确保它按预期工作。如果它不像您想要的那样工作,您可以使用另一种方法,例如ContentFilterable界面。 G。如果你不需要花哨的Groovy语法,但总是${<something>},像

filter { 
    result = it 
    props.each { name, value -> 
     result = result.replaceAll("\${$name}", value) 
    } 
    result 
}