Добавить параметры в правила Maven Enforcer, вызываемые из командной строки - PullRequest
7 голосов
/ 17 февраля 2020

После { ссылка } теперь можно вызывать плагин Maven Inforcer из командной строки.

Это хорошо работает, но, к сожалению, я еще не понял, могу ли я установить параметры правила через командную строку. Примером может быть version в правиле RequireMavenVersion.

1 Ответ

2 голосов
/ 26 февраля 2020

Нет, ты не можешь. Я на самом деле не так доволен текущей реализацией из-за этих ожиданий. Первый вариант использования был простым правилом без параметров. Конечно, мы могли бы предсказать следующие вопросы.

Давайте сначала объясним, как работает «сложная» конфигурация плагина. Взгляните на следующий пример:

<rules>
  <requireMavenVersion>
    <version/>
  </requireMavenVersion>
</rules>

Здесь requireMavenVersion - это имя класса в нижнем регистре в том же пакете, что и EnforceMojo (или enforce goal), версия является установщиком для этого класса. То, что вы видите, не более, чем Pojo. Единственным требованием здесь является то, что RequireMavenVersion реализует интерфейс EnforcerRule, поэтому Maven может вызвать его метод execute, см .:

 @Parameter
 private EnforcerRule[] rules;

Если вы хотите вызвать правило из командной строки, плагин просто пытается переименовать правило чтобы полное имя класса сделал новый экземпляр этого. Затем будет вызван его метод execute.

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

Но в заключение: нет, вы не можете.

...