Как создать динамические папки с именем Maven2 Archetype?

Я пытаюсь построить такую ​​структуру архетипа, webapp с некоторыми пользовательскими папками для нашей веб-структуры. Особенно некоторые динамические папки, которые также будут содержать некоторые файлы, созданные архетипом.

└───src
    └───main
        └───webapp
            └───WEB-INF
                ├───cfg
                │   ├───log4j
                │   └───resources
                │       └───extensions
                │           ├───${shortName}-business
                │           └───${shortName}-layout
                └───lib

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

<requiredProperties>
  <requiredProperty key="shortName" />
</requiredProperties>

Свойство shortName я используется в fileSet:

<fileSet>
  <directory>[..]/resources/extensions/${shortName}-business</directory>
</fileSet>

<fileSet>
  <directory>[..]/resources/extensions/${shortName}-layout</directory>
</fileSet>

Команда для генерации архетипа:

mvn archetype:generate -B \
       -DgroupId=com.stackoverflow \
       -DartifactId=stackoverflow-question -DarchetypeGroupId=com.stackoverflow \
       -DarchetypeArtifactId=stackoverflow-archetype -DarchetypeVersion=1.0 \
       -DshortName=soq

Я предполагаю получить следующую структуру папок:

..\
   ├───soq-business
   └───soq-layout

Но я получаю, например. это имя ${shortName}-business как папка. Без замены собственности.

..\
   ├───${shortName}-business
   └───${shortName}-layout

Как я могу это достичь? И как я могу разместить файлы ниже soq-business? Не зная имя папки в это время?

Ответ 1

Я решил точно такую ​​же проблему сегодня...

Я нашел запись в блоге Адама Леггетта, которая описывает использование заполнителей в путях: посмотрите https://mikeciblogs.wordpress.com/2010/01/14/working-with-custom-maven-archetypes-part-1/ (Шаг 4).

Кажется, что трюк заключается в использовании удвоенных подчеркиваний вместо синтаксиса фигурных скобок, поэтому ${shortName} становится __shortName__.

Однако я еще не пробовал решение. Если вы это сделаете, сообщите нам, если это сработает. Спасибо!

НТН!

Ответ 2

Как любезно указал Вивиан, в моей записи в блоге содержатся некоторые подсказки о том, как это сделать. Тем не менее, одна вещь, на которую следует обратить внимание (которая явно не упоминается в блоге) заключается в том, что эта функция работает только с плагином архетипа 2.x