Передача дополнительных свойств в архетип Maven: генерировать - PullRequest
13 голосов
/ 11 августа 2010

Я создал архетип Maven для пользовательской настройки проекта, который прекрасно работает, но мне было интересно, можно ли передать дополнительные параметры, чтобы я мог сделать более интересные шаблоны. Я пробовал что-то вроде

mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost

и поставить

...
<option name="db.host.config.option" value="${dbHost}" />
...

в моем шаблоне, но это не похоже на работу. Есть ли способ сделать это с архетипом?

Ответы [ 3 ]

17 голосов
/ 26 сентября 2010

Вы просто должны упомянуть dbHost как requiredProperty в META-INF/maven/archetype-metadata.xml.

<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="dbHost"/>
    </requiredProperties>
</archetype-descriptor>
7 голосов
/ 20 июля 2012

Хотя этот вопрос довольно старый, я поделюсь своим опытом с Maven 3.04

Пока генерирует архетип из проекта ( create-from-project ), вы можете передать файл свойств в качестве аргумента. Каждое переданное свойство (ключ = значение) , в свою очередь, генерирует requiredProperty в файле archetype-metadata.xml со значением "value" в качестве значения по умолчанию.
С другой стороны, процесс генерации архетипа будет искать строку «значение» в наших текстовых файлах и заменять ее на «$ {key}» (то есть dbHost = db.host.config.option будет искать «db» .host.config.option "и замените его на $ {dbHost}) .

Хотя с использованием архетипа для окончательной генерации проекта (с помощью generate ) нам предлагается предоставить значение для этого параметра с ключом -D * 1020. * = значение * * 1 022. Поэтому нет необходимости редактировать файл archetype-metadata.xml вручную.

0 голосов
/ 09 декабря 2017

нам также нужно передать значения свойств в командной строке, сохранив их в archetype-metadat.xml, но здесь имя не должно содержать «.» символ, поскольку он не позволяет обновлять значения.

В Maven запрещено использовать имя, например, prod.ex.version. Вы можете использовать prod-ex-version

...