Передача дополнительных свойств в maven archetype: generate

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

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

и поместите

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

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

Ответ 1

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

<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="dbHost"/>
    </requiredProperties>
</archetype-descriptor>

Ответ 2

Хотя этот вопрос довольно старый, я расскажу о своем собственном опыте с Maven 3.04

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

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

Ответ 3

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

Это ограничение в Maven, чтобы не использовать имя, подобное prod.ex.version вы можете использовать prod-ex-версию