Самый простой и удобный способ создания нового проекта в 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