Как создать динамические папки с именем 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