You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins DSL脚本取pom.xml版本用于nexusArtifactUploader报错求助

解决Jenkins DSL中获取Pom版本号报错的问题

这个报错groovy.lang.MissingPropertyException: No such property: version for class: groovy.lang.Binding其实很好理解——你在脚本里直接引用了version变量,但这个变量根本没被定义,Groovy找不到它呀!

你已经通过readMavenPom拿到了pom对象,里面确实包含版本号,但你要么没把这个属性赋值给version变量,要么在nexusArtifactUploader里没正确引用pom.version,而是直接写了version。

给你两种修正方式,选哪种都可以:

方式一:直接在nexus配置中使用pom.version

stage('Nexus') {
    steps {
        script {
            def pom = readMavenPom file: 'pom.xml'
            echo "读取到的版本号:${pom.version}"
            
            nexusArtifactUploader(
                nexusVersion: 'nexus3',
                protocol: 'http',
                nexusUrl: '你的Nexus服务地址', // 补全你的实际地址
                groupId: pom.groupId, // 还能直接复用pom里的groupId、artifactId等属性
                version: pom.version, // 这里一定要用pom.version,不能直接写version
                repository: '你的目标仓库名',
                artifactId: pom.artifactId,
                file: 'target/your-artifact.jar', // 替换成你要上传的文件路径
                type: 'jar' // 根据你的制品类型调整,比如war、pom等
            )
        }
    }
}

方式二:先把版本号赋值给变量再使用

如果后续还要多次用到版本号,先赋值给变量会更清晰易读:

stage('Nexus') {
    steps {
        script {
            def pom = readMavenPom file: 'pom.xml'
            def projectVersion = pom.version // 把pom里的version赋值给变量
            echo "当前项目版本:${projectVersion}"
            
            nexusArtifactUploader(
                nexusVersion: 'nexus3',
                protocol: 'http',
                nexusUrl: '你的Nexus服务地址',
                groupId: pom.groupId,
                version: projectVersion, // 这里用定义好的变量
                repository: '你的目标仓库名',
                artifactId: pom.artifactId,
                file: 'target/your-artifact.jar',
                type: 'jar'
            )
        }
    }
}

额外注意事项

  • 确认readMavenPom的file参数路径正确,如果pom.xml不在Jenkins工作目录的根路径,要写成相对路径,比如file: 'modules/my-subproject/pom.xml'
  • 检查nexusArtifactUploader的参数是否符合你使用的插件版本,不同版本的插件参数可能略有差异,比如有些版本可能需要指定classifier等额外参数

内容的提问来源于stack exchange,提问作者user3847894

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:10:33