gradle - 替换XML文件中的文本

时间:2017-05-31 19:17:37

标签: gradle build.gradle

我想在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将其视为字符串?

感谢。

2 个答案:

答案 0 :(得分:0)

引自Mr. Hakis Blog

  

如果我们使用双引号字符串并且它包含带有$ {expression}语法的Groovy表达式,那么我们有一个GString。

正如上面的链接所述,有几种方法可以声明一个简单的String而不是GString,例如简单地使用单引号。此外,请注意,您的问题是由Groovy功能而不是Gradle功能引起的。因此,${expression}语法不仅适用于Gradle(项目)属性,还适用于任何Groovy表达式。

答案 1 :(得分:0)

最简单的解决方案是使用单引号,而不想要替换。例如:

text.replaceAll('${GROUP_ID}', groupId)