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

Docker内Jenkins Maven任务PMD源码拷贝失败如何解决?

解决方案

方案1:配置maven-pmd-plugin直接生成相对路径(最推荐)

maven-pmd-plugin 3.13.0原生支持输出相对路径,只需在插件配置中新增outputRelativePaths参数即可:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.13.0</version>
<configuration>
  <!-- 开启相对路径输出 -->
  <outputRelativePaths>true</outputRelativePaths>
  <!-- 其他原有配置保持不变 -->
</configuration>

开启后生成的pmd.xml中file节点的name会自动使用相对于项目根目录的路径,完全匹配你期望的输出格式。


方案2:配置Jenkins PMD插件路径映射(无需修改构建配置)

如果不想调整Maven插件配置,可以直接在Jenkins任务的PMD报告设置中做路径替换:

  • 打开对应Jenkins任务的配置页面,找到「构建后操作」下的「Publish PMD analysis results」
  • 点击「高级」按钮,找到「Source code path prefix」配置项
  • 填入容器内的路径前缀 /usr/src/mymaven/ 保存即可

插件解析报告时会自动删除路径前缀,匹配Jenkins工作空间内的源码路径。


方案3:脚本替换路径(兜底兼容方案)

如果上述方案都不适用,可以在构建完成后直接用脚本批量替换pmd.xml内的绝对路径前缀,修改docker-compose的command配置即可:

command:
  [ "sh", "-c",
    "mvn clean install pmd:pmd && find . -name 'pmd.xml' -exec sed -i 's#name=\"/usr/src/mymaven/##g' {} \;"
  ]

如果运行时出现sed报错,可将sed -i替换为sed -i ''适配不同镜像的sed版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:03