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

如何在Jenkins的Maven Project类型任务中读取POM.xml的groupId、artifactId和version

Jenkins Maven Project 类型任务读取POM属性定位Jar包的解决方案

Maven Project 类型任务无需依赖Pipeline Groovy脚本,可通过以下两种原生方案实现POM属性读取:

方案1:使用Maven Help插件导出属性传递

无需额外安装插件,直接调用Maven自带插件完成属性读取:

  • 在第一个Maven Project任务的Build环节,mvn package/mvn install执行完成后,新增「Execute shell」(Linux环境)或「Execute Windows batch command」(Windows环境)步骤,执行以下命令导出所需属性到本地文件:
    # 导出artifactId
    mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout > artifactId.txt
    # 导出groupId
    mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout > groupId.txt
    # 导出version
    mvn help:evaluate -Dexpression=project.version -q -DforceStdout > version.txt
    # 如需直接获取自定义构建的jar前缀(配置过finalName的场景),直接执行以下命令即可
    mvn help:evaluate -Dexpression=project.build.finalName -q -DforceStdout > finalName.txt
    
  • 在第一个任务的Post-build Actions中,先配置「Archive the artifacts」,将导出的txt文件和构建好的jar包一同存档,再配置「Trigger/call builds on other projects」触发第二个任务。
  • 第二个任务拿到传入的工作空间文件后,直接读取txt文件内容即可拼接得到jar文件名,默认Maven构建jar的命名规则为${artifactId}-${version}.jar,如需对应Maven仓库路径则为${groupId//./\/}/${artifactId}/${version}/${artifactId}-${version}.jar。

方案2:通过环境变量注入插件直接传递参数

需要提前安装Jenkins的Environment Injector Plugin插件,可直接将属性作为环境变量跨任务传递:

  • 第一个任务的mvn package执行完成后,新增执行shell步骤,将属性写入properties文件:
    echo "ARTIFACT_ID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" > maven_env.properties
    echo "GROUP_ID=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout)" >> maven_env.properties
    echo "PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> maven_env.properties
    
  • 新增「Inject environment variables」步骤,属性文件路径填写maven_env.properties,三个属性会被注入为当前构建的全局环境变量。
  • 在「Trigger parameterized build on other projects」的参数配置中,选择「Pass current build parameters」,即可将三个环境变量直接传递给第二个任务,第二个任务中直接通过$ARTIFACT_ID、$GROUP_ID、$PROJECT_VERSION变量就能拼接得到目标jar包名称。

补充说明

如果第二个任务的工作空间已经拿到了第一个任务传入的pom.xml文件,也可以直接在第二个任务中执行上述mvn help:evaluate命令读取属性,无需第一个任务提前传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:15:00