如何使用Maven Enforcer插件?

我想使用Maven Enforcer插件来检查我的路径上是否有重复的类。

我从这里尝试了这个例子。

但是当我像这样运行它时:

mvn enforcer:enforce

我收到此错误:

未能在项目数据填充器上执行目标 org.apache.maven.plugins:maven-enforcer-plugin:1.0.1:enforce (default-cli) : 目标 org.apache.maven.plugins:maven-enforcer-plugin:1.0.1:enforce 的参数 “rules” 丢失或无效

有没有办法正确使用它?

编辑 #1

如果将我的配置更改为:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.0.1</version>
            <executions>
                <execution>
                    <id>enforce-versions</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <AlwaysPass />
                        </rules>
                        <fail>true</fail>
                    </configuration>
                </execution>
            </executions>
        </plugin>

产生相同的错误。


答案 1

您的第一个版本不起作用的原因是执行标记内的插件配置和执行标记外部的插件配置之间存在差异。仅当您的插件由完整 Maven 构建的特殊阶段触发时,才会使用执行。

Maven 配置指南更好地解释了它:

标记内的配置与外部的配置不同,因为它们不能从直接命令行调用中使用。相反,它们仅在调用它们绑定到的生命周期阶段时才应用。或者,如果您将配置部分移到执行部分之外,它将全局应用于插件的所有调用。


答案 2

尝试这样做,将配置移到执行之外,这样它就不会绑定到生命周期阶段。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.0.1</version>
    <executions>
        <execution>
            <id>enforce-versions</id>
            <goals>
                <goal>enforce</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <rules>
            <AlwaysPass />
        </rules>
        <fail>true</fail>
    </configuration>
</plugin>

现在,当您这样做时,它会从您的pom.xml中挑选规则。mvn enforcer:enforce


推荐