0

我有一个多模块 maven 项目,我找不到禁用 pmd 的方法,checktyle 用于 groovy 源。

我确实从顶层运行了一个命令:

mvn clean install pmd:pmd checktyle:checkstyle

我的项目结构是:

pom.xml
-module1
 src
   main
      groovy          
   test
      groovy

-module2
 src
   main
      groovy
      java
  test
      groovy

我不希望 pmd/checkstyle 检查我的 groovy 文件。这是pluginManagement中的父 pom 部分:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>2.7.1</version>
    <configuration>
        <format>xml</format>
        <targetJdk>1.6</targetJdk>
        <linkXRef>false</linkXRef>
        <!--
          <excludeRoots>
            <excludeRoot>${project.basedir}/src/main/groovy</excludeRoot>
            <excludeRoot>${project.basedir}/src/test/groovy</excludeRoot>
          </excludeRoots>
        -->
        <!--
        <excludeRoots>
          <excludeRoot>
           ${project.basedir}/target/generated-sources/groovy-stubs
          </excludeRoot>
        </excludeRoots>
        -->
        <excludes>
           <exclude>**/generated-sources/groovy-stubs/**/*.java</exclude>
        </excludes>
      <rulesets>
       <ruleset>
        ${rule.repository.url}/pmd/rules/pmd-rules/1.0.4.2/pmd-rules-1.0.4.2.xml
       </ruleset>
      </rulesets>
     </configuration>
 </plugin>

module1 的 pom.xml 中没有对 pmd/checktyle 插件的任何引用。无论如何 pmd,检查样式​​适用于 groovy 源。

module2 确实在它的 pom.xml 中引用了这些插件并且仍然没有忽略 groovy。

我做错了什么?

4

1 回答 1

0

如果使用调试选项 (-X) 运行 Maven,则可以看到 PMD-plugin 处理的所有目录。所有目录都列在变量 compileSourceRoots 中。

您可以使用这些排除项来为 groovy-stub 禁用 PMD:

<excludeRoots>
    <excludeRoot>${project.build.directory}/generated-sources/groovy-stubs/main</excludeRoot>
    <excludeRoot>${project.build.directory}/generated-sources/groovy-stubs/test</excludeRoot>
</excludeRoots>
于 2013-09-19T07:33:41.010 回答