尝试使用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感谢您的时间,是的,这是一个错误的示例,对此表示抱歉!非常感谢。是的,这个例子是错误的!