Как создать папки с динамическими именами с помощью Maven Archetype? - PullRequest
13 голосов
/ 10 мая 2010

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

└───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, не зная имени папки в это время?

Ответы [ 2 ]

19 голосов
/ 12 мая 2010

Я понял ту же проблему сегодня ...

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

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

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

НТН!

4 голосов
/ 18 июня 2010

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

.
...