Maven Enforcer 插件:通过命令行指定规则

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

我想通过命令行执行 Maven Enforcer 插件

我已经尝试过:

mvn enforcer:enforce -Drules=[requireReleaseDeps]
mvn enforcer:enforce -Drules=requireReleaseDeps

我总是收到此错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (default-cli) on project lkww-util-app-wurm-admin-rs-api: The parameters 'rules' for goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce are missing or invalid -> [He
lp 1]

我该如何指定

rules
参数?

maven command-line maven-3 maven-plugin maven-enforcer-plugin
3个回答
5
投票

您还可以在 POM 的主要部分中预先配置您的

<executions>
,然后使用
<execution>
<id>
从命令行调用它们(请参阅有关此语法的更多信息,请参阅配置插件指南):

mvn enforcer:enforcer@my-execution-id

由于默认情况下,

<execution>目标
的任何
enforce
都会将目标绑定到
validate
阶段,因此
my-execution-id
执行也会在正常的
mvn clean install
上运行。如果不需要,请使用
<skip>true</true>
配置执行并在命令行上覆盖它:

mvn enforcer:enforcer@my-execution-id -Denforcer.skip=false

这是否比将

maven-enforcer-plugin
配置分布在 POM 的主要部分和
<profiles>
更清晰取决于个人喜好。


4
投票

强制执行器插件不允许通过命令行参数选择/参与规则。

针对此插件存在一个未决问题,因此您可以投票支持。

同时,如果您选择的规则可以分为少量选择,那么您也许可以创建配置文件并将规则与配置文件关联,从而允许通过指定配置文件为选定的规则子集运行构建。在下面的示例中,有两个配置文件,每个配置文件都有不同的执行器规则:

<profiles>
    <profile>
        <id>EnforceBannedPlugins</id>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>enforce-banned-plugins</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedPlugins>
                                    ...
                                </bannedPlugins>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </profile>
    <profile>
        <id>EnforceMavenVersion</id>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>enforce-maven-version</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    ...
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </profile>
</profiles>

当然,如果您在运行时指定执行器规则的要求可以通过一些固定配置来满足,那么这只是一个运行器。但是,如果要求是支持任何可能的执行者规则,那么你就不走运了,因为该插件不支持这一点。


0
投票

我现在可以使用以下 cli 来运行 requireReleaseDeps:

mvn org.apache.maven.plugins:maven-enforcer-plugin:3.4.1:enforce -Denforcer.rules=requireReleaseDeps

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