Apache Maven — введение в автоматизированную сборку проектов (часть 2)

Привет Хабр! В прошлой части мы установили Maven на компьютер и проверили, что всё работает.
Продолжим погружаться в Maven. Создадим наш первый проект, через командную строку.
Посмотрим на иерархию созданных каталогов. И разберём инструменты Maven.
Создание первого проекта Maven
Введём возможно для кого-то новое понятие.
Архетип - это шаблон проекта, который объединяется с некоторыми пользовательскими данными для создания рабочего проекта Maven, адаптированного к требованиям пользователя.
Простыми словами, Maven для нас подготавливает рабочую среду (иерархию каталогов и файлов для работы с проектом) на основе накопленного опыта разработчиков. Остаётся лишь выбрать тот самый архетип, который нам подходит.
Для создание такого проекта на основе архетипа достаточно выполнить команду ниже. Пока не вдаёмся в подробности данной команды, а просто выполняем её. Maven начнёт скачивать необходимые зависимости под выбранный архетип.
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
С помощью этой команды мы создали проект «my-app».
название архетипа – «maven-archetype-quickstart» версии «1.4», это один из самых простых архетипов, он просто создаёт иерархию каталогов, pom.xml и один java class (так называемый Hello World!).
После того как maven отработает вы увидите «BUILD SUCCESS», это значит всё прошло успешно. В рабочем каталоге также появилась папка «my-app»

Вот такая структура получится в my-app:
src
main
java
com.mycompany.app
App.java
test
java
com.mycompany.app
AppTest.java
pom.xml
Одну из главных ролей играет pom.xml, более подробно мы его рассмотрим в следующей части, пока скажу, что в нём содержатся зависимости (dependencies), плагины (plugins) и настройки проекта.
Иерархия в зависимости от архетипа отличается, тут нет определённого стандарта, всё зависит от предстоящего проекта. Например: написание Web проекта или тестирование API. Даже не обязательно оставлять всё как есть можете, что то убрать или добавить.
С иерархией разобрались теперь перейдём к инструментам.
Инструменты Maven
В таблице представлены основные команды с кратким описанием:
команда | краткое описание |
| компилирует исходный код |
| упаковывает проект в JAR |
| установка пакета в локальный репозиторий для дальнейшего использования в других проектах |
| отчищает артефакты (target) |
| генерирует документацию |
| запускает тесты |
В современных IDE не обязательно, постоянно прописывать команды в командной строке, достаточно запустить с помощью среды разработки.
Все последующие команды будем выполнять в рабочем каталоге "my-app":
mvn compile:
Если всё прошло успешно то увидите «BUILD SUCCESS»

mvn compile
После выполнения в проекте, Maven создаст папку target. В ней например будут храниться Allure-отчёт скомпилированные классы и т.д.
mvn package:
Упаковывает наш проект в JAR-файл:
mvn package
Этот файл должен лежать в корне target/"name".jar
mvn install:
Делает почти тоже самое, что
mvn compile
в добавок запускает тесты и упаковывает в JAR-файл.

mvn clean:
Отчищает артефакты, удаляет папку "target" со всеми данными сборки.
mvn clean test
объединяет в себе две команды, удобно при тестировании не нужно запускать две команды.

mvn clean
mvn site:
Создаёт вам описание проекта Web-версию. Чтобы её посмотреть необходимо запусть
/target/site/index.html
в любом браузере.

mvn site

mvn test:
Помогает нам скомпилировать все тесты и выведет удобный отчёт, если что-то не пройдёт.
Одно условие, чтобы Maven увидел наши тесты в них обязательно должно быть слово
Test
, в противном случаем тесты просто не запустятся.*Test.java;
Test*.java;
*TestCase.java.

mvn test
Все тесты прошли успешно, мы с вами большие молодцы) Достаточно удобно, не нужно переходить по всем тестам в ручную, особенно когда их больше 20.
Заключение: мы создали наш первый проект на основе простейшего архетипа и поработали с инструментами, разобрали основные из них.
В следующей части подробно разберём pom.xml.