我正在尝试从pom.xml文件中读取属性。我尝试了以下方法,并且有效:
steps {
script {
def xmlfile = readFile "pom.xml"
def xml = new XmlSlurper().parseText(xmlfile)
def version = "${xml.version}"
echo version
}
}
当我尝试做这样的事情时:
steps {
script {
def xmlfile = readFile "pom.xml"
def xml = new XmlSlurper().parseText(xmlfile)
def version = "${xml.version}"
def mystring = "blabhalbhab-${version}"
echo mystring
}
}
管道突然失败,并显示以下错误:
Caused: java.io.NotSerializableException: groovy.util.slurpersupport.NodeChild
这里可能是什么问题?
编辑:只是添加给其他使用相同用例的人。我的具体问题是关于如何避免使用XmlSlurper()进行CPS相关的错误。但是对于试图解析POM的其他任何人,却担心PR可能会弃用readMavenPom
,这样做最安全,最简单的方法可能是:
def version = sh script: "mvn help:evaluate -f 'pom.xml' -Dexpression=project.version -q -DforceStdout",returnStdout: true trim()
通过这种方式,您可以使用maven本身来告诉您版本是什么,而不是在该死的地方刺探或隐藏。 How to get Maven project version to the bash command line