我有一个读取pom.xml文件的代码,然后尝试重新序列化并将其写回:
// Get the file raw text
def pomXMLText = readFile(pomFile)
// Parse the pom.xml file
def project = new XmlSlurper(false, false).parseText(pomXMLText)
... do some useful stuff ...
def pomFileOut = "$WORKSPACE/pomtest.xml"
def pomXMLTextOut = groovy.xml.XmlUtil.serialize(project)
println "pomXMLTextOut = $pomXMLTextOut" // <-- This line prints to updated XML
writeFile文件:pomFileOut,text:pomXMLTextOut //&lt; - 此行崩溃并显示帖子标题中列出的错误:java.io.NotSerializableException:groovy.util.slurpersupport.NodeChild
我已经尝试将pomXMLTextOut变量转换为String。我尝试应用.text()方法,该方法获得了jenkins沙箱安全性错误。有没有其他人能够从Jenkins管道中运行的groovy脚本成功编写XML文件?
顺便说一句,我还尝试过使用File对象,但是这并不能在jenkins节点之间进行远程处理。只要作业总是在master上运行,它就可以工作。
答案 0 :(得分:0)
您可以尝试@NonCPS注释并在这样的函数中关闭那些不可序列化的对象
@NonCPS
def writeToFile(String text) {
...
}
的解释
@NonCPS方法可以安全地将非Serializable对象用作本地对象 变量