Maven: передача значений requiredProperty в archetype-metadata.xml через свойства или файл yaml - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу создать архетипы maven, используя пользовательские свойства через arprotype-metadata.xml requiredProperty -

<requiredProperties>
    <requiredProperty key="proxy-name">
        <defaultValue>${proxy.name}</defaultValue>
    </requiredProperty>
    <requiredProperty key="proxy-desc">
        <defaultValue>${proxy.description}</defaultValue>
    </requiredProperty>
</requiredProperties>

Однако мое требование состоит в том, чтобы инициализировать эти requiredProperty значения, используя пары ключ: значение , предоставленные либо в файле свойств, либо в файле yaml, чтобы я мог вставить эти значения в pom.xml из настраиваемая структура проекта под archetype-resources.

  <properties>
    <proxy-name>${proxy.name}</proxy-name>
    <proxy-desc>>${proxy.description}</proxy-desc>
  </properties>

Я не хочу предоставлять значения для этих свойств через командную строку или путем предоставления значений по умолчанию. Я хочу, чтобы инициализация этих значений свойств происходила на основе чтения файла внешних свойств при запуске команды mvn archetype:generate.

Это вообще возможно? Заранее извиняюсь, если вопрос кажется слишком расплывчатым или действительно элементарным. Это мой первый опыт работы с пользовательскими архетипами maven.

PS - я попытался использовать yaml-properties-maven-plugin , однако значения по-прежнему не заполняются в archetype-resources pom.xml, который обычно принимает значения при инициализации значений свойств через командная строка.

1 Ответ

0 голосов
/ 01 декабря 2018

Итак, чтобы ответить на мой вопрос и помочь любому, кто столкнулся с той же проблемой:

Что я сделал, так это включил archetype.xml в META-INF/maven, который принимает имя файла свойств ресурса, чтобы использовать его для замены пользовательских значений в archetype-metadata.xml. Вот как выглядит archetype.xml:

<?xml version="1.0" encoding="UTF-8"?>
<archetype>
    <id>quickstart-archetype</id>
    <sources/>
    <resources>
        <resource>archetype.properties</resource>
    </resources>
</archetype>

Таким образом, плагин yaml-maven-properties читает файл yaml и записывает файл archetype.properties в папку src/main/resources, которая также содержит структуру папки archetype-resources для генерации архетипа.

Дайте мне знать, если кому-то понадобится больше разъяснений о том, как я этого добился.

...