pmd maven插件不尊重exclude-cpd.properties

问题描述 投票:0回答:1

我有多个模块的Maven项目,其结构如下:

/myProject 
  pom.xml
  exclude-cpd.properties
  -- module1
     pom.xml
     exclude-cpd.properties
  -- module2
     pom.xml
     exclude-cpd.properties

在我的父pom.xml中,我添加了pmd插件:

<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.12.0</version>
                    <configuration>
                        <rulesets>
                            <ruleset>pmd_ruleset.xml</ruleset>
                        </rulesets>
                        <minimumTokens>80</minimumTokens>
                        <includeTests>true</includeTests>
                        <excludeFromFailureFile>exclude-cpd.properties</excludeFromFailureFile>
                        <printFailingErrors>true</printFailingErrors>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

并且在exclude-cpd.properties中,我包括要从cpd-check中排除的所有文件,以逗号分隔的字符串。

但是当我运行mvn clean compile时,它仍会扫描那些排除的文件并抱怨重复。似乎excludeFromFailureFile根本不起作用,我最终不得不使用excludes从pmd检查和cpd检查中排除文件,但这并不理想。有谁知道如何使excludeFromFailureFile工作?

工作pom.xml:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.12.0</version>
                <configuration>
                    <rulesets>
                        <ruleset>pmd_ruleset.xml</ruleset>
                    </rulesets>
                    <minimumTokens>80</minimumTokens>
                    <includeTests>true</includeTests>
                    <excludes>
                        <exclude>**/XyzService*.java</exclude>
                    </excludes>
                    <printFailingErrors>true</printFailingErrors>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
maven-plugin pmd
1个回答
0
投票

我认为您误解了这些标志。

excludeFromFailureFile的字面意思是:如果在这些文件上报告了违规,则不要使构建失败。这些文件仍会被分析,但是如果只有那些文件且没有其他文件违反,则构建仍会通过(如果其他文件有违反,则构建仍会失败)。这甚至都不是PMD功能,而是Maven插件的特色。

这不是“从分析中排除”,为此,您具有在第二个示例中使用的excludes配置。

© www.soinside.com 2019 - 2024. All rights reserved.