Плагин 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>
это вопрос личных предпочтений.