Если честно, я не вижу смысла в создании списка всех каталогов. Мне кажется более «естественным» сначала выбрать проект, а затем добавить каталог, если требуется. Вот почему в списке архетипов больше IMO. В любом случае вам понадобится их имя, даже если у вас есть все каталоги в списке.
Во всяком случае, вот несколько кандидатов;
Редактировать: после разъяснения Матфея по каталогам архетипов.
Я неправильно понял некоторые понятия, и мой ответ не ясен и не верен.
Смысл каталогов именно в том, чтобы не нужно было заранее знать названия архетипов . Они созданы для публикации архетипов и позволяют mvn archetype:generate
перечислять архетипы. Поэтому имеет смысл добавить «внешние» каталоги (понимают не во внутренние), чтобы получить более широкий список известных архетипов при использовании mvn archetype:generate
.
Для архетипов без каталога пользователи должны вводить ужасную команду, которая должна быть где-то задокументирована (поскольку она требует знания артефакта).
Относительно моих предложений:
Одна забавная вещь, которую я узнал, копая это. Парни Maven предоставляют хороший инструмент, который помогает людям, разрабатывающим архетипы, создавать XML-каталог: цель archetype:crawl
в основном сканирует локальный репозиторий Maven, ищущий архетипы, и генерирует / обновляет файл archetype-catalog.xml
в ~/.m2/repository
по умолчанию. Проекты, людям просто нужно периодически запускать что-то вроде:
mvn archetype:crawl -Dcatalog=/var/www/html/archetype-catalog.xml
Grails не предоставляет каталог. Чтобы создать проект, нам нужно запустить :
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails \
-DarchetypeArtifactId=grails-maven-archetype \
-DarchetypeVersion=1.0 \
-DarchetypeRepository=http://snapshots.repository.codehaus.org \
-DgroupId=example -DartifactId=my-app
Но как только мы это сделали, у нас есть архетип в нашем локальном хранилище. Так что если мы введем:
mvn archetype:crawl -Dcatalog=/home/<me>/.m2/archetype-catalog.xml
Архетип указан в ~/.m2/archetype-catalog.xml
, и теперь мы можем использовать mvn archetype:generate
и для Grails (см. Вариант 5):
mvn archetype:generate
...
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -> maven-archetype-archetype (archetype)
2: local -> maven-archetype-j2ee-simple (j2ee)
3: local -> maven-archetype-quickstart (quickstart)
4: local -> maven-archetype-webapp (webapp)
5: local -> grails-maven-archetype (maven-project)
6: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
...
Это, конечно, (огромный) обходной путь, и он может иметь побочные эффекты (вы не увидите новых версий архетипов). На самом деле, я не думаю, что цель архетипа: цель сканирования предназначена для этого использования. Я хотел бы, чтобы все проекты опубликовали свои архетипы.