尝试使用groovy DSL替换文件中的字符串

尝试使用groovy DSL替换文件中的字符串,groovy,jenkins-groovy,jenkins-job-dsl,Groovy,Jenkins Groovy,Jenkins Job Dsl,我想将文件中的VERSION占位符替换为变量VERSION值,但遇到以下错误: def versions = ["8.8.0", "9.9.0"] versions.each { version -> def file = new File("$Path/test.url") def fileText = file.replaceAll("VERSION", "${versio

我想将文件中的
VERSION
占位符替换为变量
VERSION
值,但遇到以下错误:

def versions = ["8.8.0", "9.9.0"]
versions.each { version ->
    def file = new File("$Path/test.url")
        def fileText = file.replaceAll("VERSION", "${version}")
            file.write(fileText);
错误:

groovy.lang.MissingMethodException: No signature of method: java.io.File.replaceAll() is applicable for argument types: (java.lang.String, org.codehaus.groovy.runtime.GStringImpl) values: [VERSION, 8.8.0]

我是groovy dsl的新手,不知道我遗漏了什么,任何建议,谢谢

另一种方法是使用groovy文件
.text
属性:

def f = new File('sample-file.txt')
f.text = f.text.replaceAll('VERSION', '8.8.0')
正如@cfrick所提到的,在多个版本上执行替换操作没有多大意义,因为只有第一个版本才能真正找到
VERSION
字符串

在示例文件上运行上述操作:

─➤ groovy solution.groovy
─➤ 
将导致替换字符串:

─➤ diff sample-file.txt_original sample-file.txt
1c1
< Dolore magna aliqua. VERSION Ut enim ad minim veniam.
---
> Dolore magna aliqua. 8.8.0 Ut enim ad minim veniam.
─➤ diff sample-file.txt_原始sample-file.txt
1c1
多洛雷·麦格纳·阿利夸。8.8.0最低限度的安全。

其中,
diff
是一个用于比较两个文件的linux工具。

这可能只是一个很差的示例,但要提到它:如果代码可以工作,那么它只能用列表中的第一个版本替换所有出现的版本。下一个版本将不再在已替换的(同一)文件中找到版本。@cfrick感谢您的时间,是的,这是一个错误的示例,对此表示抱歉!非常感谢。是的,这个例子是错误的!