Ответ 1
Честно говоря, я действительно не вижу смысла в создании списка всех каталогов. Мне кажется более "естественным" сначала выбрать проект, а затем добавить каталог, если это необходимо. Вот почему ИМО больше ценит список архетипов. Вам все равно понадобится их имя, даже если у вас есть все каталоги в списке.
В любом случае, вот некоторые кандидаты;
- У Grails есть архетипы в http://snapshots.repository.codehaus.org/.
- У Atlassian есть архетипы в https://maven.atlassian.com/repository/public/
Изменить: после уточнения Матфея по каталогам архетипа.
Я неправильно понял некоторые понятия, и мой ответ не ясен и верен.
Точка каталогов точно не должна заранее знать имена архетипов. Они сделаны для публикации архетипов и позволяют mvn archetype:generate
перечислять архетипы. Поэтому имеет смысл добавить "внешние" каталоги (не понимайте во внутреннем), чтобы получить более широкий список известных архетипов при использовании mvn archetype:generate
.
Для архетипов без каталога пользователи должны ввести ужасную команду, которая должна быть документирована где-то (потому что она требует знания артефакта).
Относительно моих предложений:
-
Атласские архетипы находятся во внутреннем каталоге. Не хорошее предложение.
-
Архетипы Grails находятся не во внутреннем каталоге или в опубликованном
archetype-catalog.xml
. Не хорошее предложение. -
ServiceMix содержит каталоги http://servicemix.apache.org/tooling/ (на основе шаблона
http://servicemix.apache.org/tooling/<version>/archetype-catalog.xml
). Действительное предложение.
Одна забавная вещь, которую я узнал, копая это. Ребята maven предоставляют хороший инструмент, который помогает людям разрабатывать архетипы для создания каталога XML: цель archetype:crawl
в основном обходит локальный репозиторий Maven, который ищет Archetypes, и по умолчанию генерирует/обновляет файл 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)
...
Это, конечно, обход (обход) и может иметь побочные эффекты (вы не увидите новых версий архетипов). На самом деле, я не думаю, что архетип: цель ползания предназначена для этого использования. Я хотел бы, чтобы все проекты публиковали их архетипы.