Самый простой и удобный способ создания нового проекта в Apache maven, это создание его из архетипа. Архетип это шаблон вашего будущего проекта или, цитируя официальную документацию: «архетип есть модель по которой делаются все остальные вещи такого рода». Всего существует порядка 1800 известных архетипов и еще больше неопубликованных или распространяемых cо сторонними библиотеками.
Тем не менее, существует всего 11 официальных архетипов, некоторые из которых я бы хотел рассмотреть
- maven-archetype-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, во внутреннем координаты проекта заданы переменными:
1 2 3 | <groupId>${groupId}</groupId> <artifactId>${artifactId}</artifactId> <version>${version}</version> |
- В файле src/main/resources/META-INF/maven/archetype.xml находится дескриптор архетипа.
1 2 3 4 5 6 7 8 9 | <archetype> <id>archetype</id> <sources> <source>src/main/java/App.java</source> </sources> <testSources> <source>src/test/java/AppTest.java</source> </testSources> </archetype> |
- «Внешний» pom.xml задаёт координаты и прочие параметры архетипа.
Созданный таким образом архетип может быть собран, загружен в репозиторий и использован в дальнейшем.
Образцы проектов, создаваемых вышеописанными архетипами, доступны на github