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
相关产品推荐
相关产品推荐

