Архетипы Maven

Самый простой и удобный способ создания нового проекта в Apache , это создание его из архетипа.  Архетип это шаблон вашего будущего проекта или, цитируя официальную документацию: «архетип есть модель по которой делаются все остальные вещи такого рода». Всего существует порядка 1800 известных архетипов и еще больше неопубликованных или распространяемых cо сторонними библиотеками.

Тем не менее, существует всего 11 официальных архетипов, некоторые из которых я бы хотел рассмотреть

  • maven--j2ee-simple — Создаёт монструозный J2EE проект, состоящий из нескольких модулей и подмодулей и практически не влючающего в себя кода (кроме одной jsp страницы)
  • maven-archetype-plugin — Шаблон плагина к Apache maven. Включает в себя образец плагина.
  • maven-archetype-quickstart — Один из наиболее удобных и часто используемых архетипов. Создаёт java приложение, состоящее из классического Hello world, образца теста и зависимости от JUnit. Подробно рассмотрен в статье о создании maven проектов
  • maven-archetype-site — Apache maven поддерживает генерацию сайта проекта, включая туда статистику по исходникам, собранные артефакты, и так далее. Данная функциональность в дикой природе используется редко, но архетип есть
  • maven-archetype-webapp — Так же весьма удобный архетип, создающий веб приложение для запусука в сервере приложений. Включает в себя необходимые дескрипторы и jsp страницу

Создание собственного архетипа

Очевидно, что архетипы не даны нам свыше и были кем-то написаны. А следовательно, можно написать свой архетип и в maven даже есть готовый архетип для написания архетипов: maven-archetype-archetype

Структура архетипа довольно проста:

  • В каталоге src/main/resources/archetype-resources располагается содержимое будущего архетипа, включая его pom.xml В отличие от «настоящего» pom.xml, во внутреннем координаты проекта заданы переменными:
  • В файле src/main/resources/META-INF/maven/archetype.xml находится дескриптор архетипа.
Используя теги <sources/> <resources/> <testSources/> <testResources/> <siteResources/> можно задать расположение соответствующих исходников артефакта.

  • «Внешний» pom.xml задаёт координаты и прочие параметры архетипа.

Созданный таким образом архетип может быть собран, загружен в репозиторий и использован в дальнейшем.

Образцы проектов, создаваемых вышеописанными архетипами, доступны на github