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