Как я создаю динамично названные папки с Архетипом Знатока?

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

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

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

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

Свойство shortName Я использую в a 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 не зная имя папки в это время?

13
задан Makoto 2 April 2018 в 17:07
поделиться

2 ответа

Сегодня я обнаружил ту же проблему ...

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

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

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

HTH!

20
ответ дан 1 December 2019 в 21:51
поделиться

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

4
ответ дан 1 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: