Плагин Maven Enforcer: укажите правила с помощью командной строки

Я хочу запустить плагин 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 параметр?

2 ответа

Решение

Плагин принудительного применения не позволяет выбирать / задействовать правила через параметры командной строки.

Существует открытый вопрос против плагина по этому вопросу, чтобы вы могли проголосовать за это.

В то же время, если ваш выбор правил можно разделить на несколько вариантов, вы можете создать профили и связать правила с профилями, что позволит запустить сборку для выбранного подмножества правил, указав профиль. В приведенном ниже примере есть два профиля, каждый из которых имеет свое собственное правило принудительного применения:

<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>

Конечно, это только бегун, если ваше требование указать правила принудительного применения во время выполнения может быть удовлетворено несколькими стандартными конфигурациями. Однако, если требуется поддержка какого-либо возможного правила принудительного применения, вам не повезло, потому что плагин не поддерживает это.

Вместо использования профилей, как рекомендуется в другом ответе, вы также можете предварительно настроить <executions> в главном разделе вашего POM, а затем используйте <execution> "s <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> это вопрос личных предпочтений.

Другие вопросы по тегам