如何让PMD在maven构建开始时运行而不是在它结束时运行?

问题描述 投票:3回答:4

我在我的pom.xml中有以下配置来检查PMD违规:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>${pmd.version}</version>
    <configuration>
        <linkXRef>true</linkXRef>
        <sourceEncoding>UTF-8</sourceEncoding>
        <minimumTokens>100</minimumTokens>
        <targetJdk>1.7</targetJdk>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
                <goal>cpd-check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

当我使用命令mvn clean install运行构建时,PMD检查作为构建过程的最后一步运行。相反,我希望PMD检查作为构建的第一步运行。

有谁知道我怎么能做到这一点?

java maven build pom.xml pmd
4个回答
5
投票

将phase元素添加到POM中。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.version}</version>
<configuration>
    <linkXRef>true</linkXRef>
    <sourceEncoding>UTF-8</sourceEncoding>
    <minimumTokens>100</minimumTokens>
    <targetJdk>1.7</targetJdk>
</configuration>
<executions>
    <execution>
        <phase>validate</phase>
        <goals>
            <goal>check</goal>
            <goal>cpd-check</goal>
        </goals>
    </execution>
</executions>
</plugin>

验证阶段是maven生命周期的第一阶段:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html


2
投票

感谢您的回答@JamesB和@PetrMensik让我了解POM中的阶段元素。它帮助我解决了我的问题。我终于解决了这个问题:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.version}</version>
<configuration>
    <linkXRef>true</linkXRef>
    <sourceEncoding>UTF-8</sourceEncoding>
    <minimumTokens>100</minimumTokens>
    <targetJdk>1.7</targetJdk>
</configuration>
<executions>
    <execution>
        <phase>compile</phase>
        <goals>
            <goal>check</goal>
            <goal>cpd-check</goal>
        </goals>
    </execution>
</executions>
</plugin>

我使用阶段:编译,原因是我的项目中有大量的测试需要花费大量的时间来执行。并且,等待这些测试完成并在所有测试结束时收到有关PMD违规的通知非常恼人。在测试之前我需要一些东西。因此,我决定编译。

欢迎进一步的建议。 :)


1
投票

您需要将此插件的执行挂钩到不同的Maven生命周期阶段(validation是默认生命周期中的第一个)。

<executions>
    <execution>
        <phase>validate</phase>
        <goals>
            <goal>check</goal>
            <goal>cpd-check</goal>
        </goals>
    </execution>
</executions>

请参阅可用Maven阶段的list以供参考。


0
投票

我设置了构建配置

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>${pmd.plugin.version}</version>
            <configuration>
                <failOnViolation>true</failOnViolation>
                <printFailingErrors>true</printFailingErrors>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
© www.soinside.com 2019 - 2024. All rights reserved.