67

我有一个使用 pmd 插件进行代码质量检查的大型 maven 项目。

自从我开始使用 pmd 插件后,我收到以下警告消息:

[WARNING] Unable to locate Source XRef to link to - DISABLED

我google了一下,发现我需要实现jxr插件。

所以我将以下内容添加到主 pom.xml 文件中的构建属性中。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jxr-plugin</artifactId>
    <version>2.3</version>
  </plugin>

welp 它并没有真正改变任何东西。

为了解决此警告消息,我需要实施什么想法?

的输出mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: /usr/share/maven-bin-3.0
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /usr/lib64/icedtea7/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.5.2-gentoo", arch: "amd64", family: "unix"

谢谢!

4

4 回答 4

85

您应该添加maven-jxr-plugin到该reportingPlugin部分。

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
</reporting>

重新运行它并享受。

顺便说一句,也许您需要运行一次jxr:jxr目标以首先生成一些将由 pmd 使用的文件。

于 2012-08-21T07:50:54.453 回答
58

请注意,还可以通过添加禁用外部参照功能

<configuration>
  <linkXRef>false</linkXRef>
</configuration>

到 maven-pmd-plugin 插件。由于运行了额外的报告插件,这解决了警告,而不会使构建时间更长。例如,如果您在 Jenkins 中运行构建,Jenkins PMD 插件可以负责将 PMD 警告与源代码相关联,无需为此运行另一个 Maven 插件。

于 2013-08-22T20:43:37.840 回答
0

以这种方式配置它更容易,而不是将其绑定到站点阶段。

然后,就这么简单mvn test

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>${maven-surefire-plugin.version}</version>
      <dependencies>
        <dependency>
          <groupId>org.junit.platform</groupId>
          <artifactId>junit-platform-surefire-provider</artifactId>
          <version>1.2.0</version>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <version>${junit.jupiter.version}</version>
        </dependency>
      </dependencies>
      <configuration>
      <testSourceDirectory>src/test/java</testSourceDirectory>
      <includes>
        <include>com.whatever.suite.*</include>
      </includes>
      <systemPropertyVariables>
        <selenide.remote>${grid.hub}</selenide.remote>
      </systemPropertyVariables>
      <trimStackTrace>false</trimStackTrace>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-report-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
      <outputDirectory>target/surefire-reports</outputDirectory>
      <linkXRef>false</linkXRef>
    </configuration>
    <executions>
      <execution>
        <id>during-tests</id>
        <phase>test</phase>
        <goals>
          <goal>report</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
于 2020-05-16T01:53:11.507 回答
0

您应该添加 maven-jxr-plugin 并jxr:jxr在生命周期之前运行目标,site如果maven-jxr-plugin在您的情况下作为插件添加:
clean jxr:jxr site

否则,如果您希望它与mvn site. 查看 JXR 使用文档: JXR 使用

于 2016-09-05T10:07:06.590 回答