Я пытаюсь создать структуру архетипа как это, веб-приложение с некоторыми пользовательскими папками для нашей веб-платформы. Особенно некоторые динамические папки, которые также будут содержать некоторые файлы, принесенные архетипом.
└───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
не зная имя папки в это время?
Сегодня я обнаружил ту же проблему ...
Я нашел запись в блоге Адама Леггетта, в которой описывается использование заполнителей в путях: взгляните на https://mikeciblogs.wordpress.com/2010/01/14/working-with-custom-maven-archetypes-part-1/ (шаг 4).
Уловка, похоже, заключается в использовании двойного подчеркивания вместо синтаксиса фигурных скобок, поэтому $ {shortName}
становится __ shortName __
.
Однако я еще не пробовал решение. Если вы это сделаете, сообщите нам, работает ли это. Спасибо!
HTH!
Как любезно отметила Вивиан, в моей записи в блоге есть несколько советов о том, как это сделать. Однако следует обратить внимание на одну вещь (которая явно не упоминается в блоге) - это то, что эта функция работает только с подключаемым модулем архетипа 2.x