Переопределение параметра CLI плагина Maven <configuration>в pom. xml - PullRequest
1 голос
/ 05 марта 2020

Как / должны подключаемые модули Maven вести себя в том порядке, в котором они обрабатывают параметры конфигурации? Я ожидаю, что свойства, передаваемые через CLI, перезаписывают свойства, определенные в блоке <configuration> в pom.xml.

. Вот пример.

pom. xml

<plugin>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.2.3</version>
    <executions>
    ...
    </executions>
    <configuration>
        <url>foo.com</url>
    </configuration>
</plugin>

CLI

mvn group:artifact:1.2.3:doit -Dmymojo.url=bar.com

В настоящее время я отлаживаю плагин (не мой), который дает приоритет значению url, определенному в POM, а не один прошел на CLI. Так должны вести себя моджо, то есть функция Maven, а не ошибка в плагине? Я не нашел ничего упомянутого в справочном руководстве.

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Согласно https://issues.apache.org/jira/browse/MNG-4979 это работает в соответствии с планом. Я нахожу это нелогичным и не нахожу причины, приведенные в MNG-4979 убедительными.

Если ваша установка позволяет изменить pom.xml, вы можете обойти это поведение, как предложено Дж. Ф. Мейером (и вопрос выше).

<properties>
  <mymojo.url>foo.bar</mymojo.url>
</properties>

<plugin>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.2.3</version>
    <executions>
    ...
    </executions>
    <configuration>
        <url>${mymojo.url}</url>
    </configuration>
</plugin>
1 голос
/ 05 марта 2020

В командной строке вы устанавливаете свойство url. Это переопределит запись <url>foo.com</url> в разделе <properties> POM.

Многие плагины позволяют задавать записи конфигурации через свойства, но эти свойства не имеют автоматического имени. В документации это обычно называется user property . Чтобы увидеть примеры, посмотрите, например,

https://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...