Я создаю Знатока 2 архетипа для нашего проекта (Сварка). Я хотел бы смочь управлять, какие файлы помещаются в сгенерированный проект на основе значения свойства, которое определяется во время 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, я не хочу загромождать сгенерированный проект с ненужными файлами.
Другой пример - то, что я, возможно, должен был бы обеспечить Гагатовый веб-фрагмент (для активации слушателя, возможно), если пользователь хочет Гагатовую поддержку.
Это - все о настройке проекта на основе того, что разработчик намеревается использовать. В то время как я мог создать целый другой архетип, иногда изменения являются столь небольшими, что было бы легче включать/исключать файл.
Есть ли способ управлять этим поведением с помощью archetype-metadata.xml
дескриптор?
Я могу посмотреть, какое кодирование потребуется, чтобы включить это в подключаемом модуле архетипа.
Я думаю, что сегодня основным средством для этого было бы условное создание двух разных артефактов архетипа. во время первоначальной сборки. Пользователь архетипа тогда явно использовал бы ваш архетип-с чем-то или ваш архетип-без чего.
Я знаю, что это не совсем то, что вам нужно, и я согласен, что то, что вы просите, является разумным вариантом использования.
Хотя я мог бы создать целый другой архетип, иногда изменения настолько незначительны, что было бы проще включить/исключить файл.
Это предложение заставило меня задуматься...
Похоже, что у вас есть структура проекта по умолчанию.
Предположим, что он большой, у него много файлов. Конечно, не стоит дублировать логику и файлы в разных архетах.
Сейчас иногда, проект имеет дополнительное поведение (связанное с Gradle).
.
Это звучит типично для другого архетипа, который начинается не с нуля, а после первого. Я видел несколько примеров таких архетипов в сети. Разработчик запускает этот архетип только в том случае, если проекту нужен Graddle. :-)
Поэтому я предлагаю : создать свой архетип Graddle, который будет добавлять только файлы, относящиеся к Graddle.
.Я лично перемещаю детали, которые могут быть удалены/добавлены по запросу пользователя, и помещаю их в различные профили , чтобы можно было построить различные детали, используя различные профили
.