Ответ 1
Я лично переместил части, которые могут быть удалены/добавлены по запросу пользователя и помещены в разные maven profiles, чтобы вы могли создавать разные часть с использованием разных профилей
Я создаю архетипы Maven 2 для нашего проекта (Weld). Я хотел бы иметь возможность контролировать, какие файлы помещаются в сгенерированный проект на основе значения свойства, которое определено во время archetype:generate
. Например, я предвижу следующее приглашение:
Define value for groupId: : com.example
Define value for artifactId: : myproject
Define value for package: com.example: :
Define value for includeGradleSupport: : y
Основываясь на значении includeGradleSupport, я хочу включить (или не включать) файл build.gradle
в сгенерированный проект. Если пользователь не хочет поддержки Gradle, я не хочу загромождать сгенерированный проект ненужными файлами.
Другим примером является то, что мне может потребоваться предоставить веб-фрагмент Jetty (возможно, активировать прослушиватель), если пользователь хочет поддерживать Jetty.
Все о настройке проекта на основе того, что разработчик намерен использовать. Хотя я мог бы создать целый архетип, иногда изменения настолько незначительны, что было бы проще включать/исключать файл.
Есть ли способ контролировать это поведение с помощью дескриптора archetype-metadata.xml
?
Я лично переместил части, которые могут быть удалены/добавлены по запросу пользователя и помещены в разные maven profiles, чтобы вы могли создавать разные часть с использованием разных профилей
Я могу посмотреть, какое кодирование потребуется, чтобы включить это в плагин архетипа.
Я думаю, что основной способ сделать это сегодня - это условно создать два разных архетипа артефакта во время первоначальной сборки. Тогда пользователь архетипа явным образом использовал бы ваш аргумент - со всем или вашим типом - без него.
Я знаю, что это не совсем то, что вам нужно, и я согласен с тем, что то, о чем вы просите, является разумным вариантом использования.
Пока я мог создать целый архетип, иногда изменения настолько незначительны, что было бы проще включать/исключать файл.
Это предложение заставило меня подумать...
Похоже, у вас есть структура проекта по умолчанию.
Предположим, что он большой, имеет много файлов. Конечно, вы не хотите дублировать логику и файлы в другом архетипе.
Теперь иногда проект имеет дополнительное поведение (связанное с Gradle).
Это звучит типичным прецедентом для другого архетипа, который не начинается ни с чем, но происходит после первого. Я видел несколько примеров таких архетипов в Интернете. Разработчик запускает этот архетип только в том случае, если проекту нужен Graddle.: -)
Поэтому я предлагаю: создать свой архетип Graddle, который добавляет только файлы, относящиеся к Graddle.
Спасибо за информацию Dan!
Я просто посмотрел на исходный код плагина архетипа, а http://jira.codehaus.org/browse/ARCHETYPE-58, похоже, не разрешил эту проблему.
Только что созданный http://jira.codehaus.org/browse/ARCHETYPE-424, чтобы отслеживать его.