我想在XML中替换一些关键字(一种变量)。我们正在将Ant构建迁移到Gradle。其中一个文件是XML,其中包含一些关键字,例如$ {FILE_ID},$ {GROUP_ID}。我需要阅读这个XML文件,并用实际值替换这些关键字。
def dest = file("pom/module-pom.xml")
def text = new File('pom/dependencies.pom').text
text = text.replaceAll("${GROUP_ID}", "${groupId}")
dest.write(text, "UTF-8")
问题是Gradle识别出$ {GROUP_ID}'作为gradle财产。有没有办法让Gradle将其视为字符串?
感谢。
答案 0 :(得分:0)
如果我们使用双引号字符串并且它包含带有$ {expression}语法的Groovy表达式,那么我们有一个GString。
正如上面的链接所述,有几种方法可以声明一个简单的String
而不是GString
,例如简单地使用单引号。此外,请注意,您的问题是由Groovy功能而不是Gradle功能引起的。因此,${expression}
语法不仅适用于Gradle(项目)属性,还适用于任何Groovy表达式。
答案 1 :(得分:0)
最简单的解决方案是使用单引号,而不想要替换。例如:
text.replaceAll('${GROUP_ID}', groupId)