来自 docker 的 Jenkins PMD 详细信息:复制源文件失败

Jenkins PMD details from docker: Copying the source file failed

我在 docker 图像中 运行 Jenkins maven 任务。我的任务生成 pmd.xml 然后由 Jenkins 插件解析。

问题是 docker 图像中的路径与 Jenkins 工作区不同。这会导致 PMD 视图在重定向到源时崩溃。 pmd.xml 绝对路径如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
    version="6.21.0" timestamp="2021-09-28T09:14:56.411">
<file name="/usr/src/mymaven/mymodule/src/main/java/my/org/MyFile.java">
<violation beginline="124" endline="124" begincolumn="40" endcolumn="145"> 
...
</violation>
</file>
</pmd>

詹金斯错误:

Copying the source file '/usr/src/mymaven/...' from the workspace to the build folder 'xxxxx.tmp' on the Jenkins master failed.
If you are building on a slave: please check if the file is accessible under '$JENKINS_HOME/[job-name]//usr/src/mymaven/...

我想在我的 pmd.xml 报告中实现相对路径,在本例中为:

...
<file name="mymodule/src/main/java/my/org/MyFile.java">
...

如何使用 maven-pmd-plugin 插件实现相对路径?

                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.13.0</version>

是否有任何其他方法可以解决在 docker 内部构建的 Jenkins 源代码中显示 pmd 详细信息的问题?

更新:添加 docker-compose.yml 片段

version: "3.7"
services:
  maven:
    image: maven:3-openjdk-11-slim
    volumes:
      - .:/usr/src/mymaven
    command:
      [ "mvn",
        "clean",
        "install",
        "pmd:pmd"
      ]
...

我通过将 docker volume 挂载点更改为 Jenkins WORKSPACE 路径解决了这个问题。

...
   volumes:
      - "${WORKSPACE}:${WORKSPACE}"
...