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

Jenkins中不同Maven构建之间能否共享target等指定目录?

Jenkins不同Maven构建任务共享surefire报告文件的实现方案

有3种稳定可用的实现方法,可根据你的实际场景选择:

  • 方案1:使用Jenkins内置制品归档功能(最推荐,无额外依赖)

    无需修改服务器配置,仅需在任务配置中调整即可:
    1. 打开第一个Maven应用的构建任务配置,找到「构建后操作」模块,添加「归档成品」项,在要归档的文件输入框中填写路径:**/target/surefire-reports/*.xml,保存配置。该任务每次构建完成后,匹配到的xml报告都会被永久保存在本次构建的归档目录中。
    2. 打开第二个Maven应用的构建任务配置,先确认已安装Copy Artifact插件(Jenkins主流预装插件,无的话在插件管理搜索安装即可),在构建步骤最开始添加「Copy artifacts from another project」项:
      • 项目名选择第一个应用的构建任务
      • 构建版本选择「最新成功构建」即可
      • 要复制的制品填写**/surefire-reports/*.xml
      • 目标目录填写第二个应用读取报告文件的对应路径,保存即可。
  • 方案2:挂载本地共享目录

    适合两个任务需要长期、高频共享大量文件的场景:
    1. 在Jenkins运行这两个任务的agent节点上创建一个固定目录,给Jenkins运行用户开通读写权限,如果是多agent集群可以部署NFS共享盘挂载到所有对应agent的相同路径下。
    2. 第一个应用的构建任务末尾添加执行shell步骤,执行命令:cp -r target/surefire-reports/*.xml 你的共享目录绝对路径/
    3. 第二个应用的构建任务开头添加执行shell步骤,执行命令:cp -r 你的共享目录绝对路径/*.xml 报表工具读取文件的对应目录/
  • 方案3:Pipeline任务直接传递文件

    如果两个任务都是用Jenkins Pipeline编写的,可以用内置的stash/unstash能力直接传递文件,不需要额外配置:
    上游第一个任务的Pipeline中,生成surefire报告后添加暂存步骤:
    stash name: 'surefire-xml-reports', includes: '**/target/surefire-reports/*.xml'
    
    下游第二个任务的Pipeline中,需要用到报告前添加拉取步骤:
    unstash 'surefire-xml-reports'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:18:01