Как стать автором
Обновить

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

Уровень сложностиПростой
Apache Maven
Apache Maven

Привет Хабр!  В прошлой части мы установили 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»

Успешное создание проекта с помощью Maven
Успешное создание проекта с помощью Maven

Вот такая структура получится в 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

В таблице представлены основные команды с кратким описанием:

команда

краткое описание

mvn compile

компилирует исходный код

mvn package

упаковывает проект в JAR

mvn install

установка пакета в локальный репозиторий для дальнейшего использования в других проектах

mvn clean

отчищает артефакты (target)

mvn site

генерирует документацию

mvn test

запускает тесты

В современных IDE не обязательно, постоянно прописывать команды в командной строке, достаточно запустить с помощью среды разработки.

Все последующие команды будем выполнять в рабочем каталоге "my-app":

  • mvn compile:

    Если всё прошло успешно то увидите «BUILD SUCCESS»

mvn compile
mvn compile

После выполнения в проекте, Maven создаст папку target. В ней например будут храниться Allure-отчёт скомпилированные классы и т.д.

  • mvn package:

    Упаковывает наш проект в JAR-файл:

    mvn package
    mvn package

    Этот файл должен лежать в корне target/"name".jar

  • mvn install:

    Делает почти тоже самое, что mvn compile в добавок запускает тесты и упаковывает в JAR-файл.

  • mvn clean:

    Отчищает артефакты, удаляет папку "target" со всеми данными сборки.

    mvn clean test объединяет в себе две команды, удобно при тестировании не нужно запускать две команды.

mvn clean
mvn clean
  • mvn site:

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

mvn site
mvn site
index.html
index.html
  • mvn test:

    Помогает нам скомпилировать все тесты и выведет удобный отчёт, если что-то не пройдёт.

    Одно условие, чтобы Maven увидел наши тесты в них обязательно должно быть слово Test, в противном случаем тесты просто не запустятся.

    • *Test.java;

    • Test*.java;

    • *TestCase.java.

mvn test
mvn test

Все тесты прошли успешно, мы с вами большие молодцы) Достаточно удобно, не нужно переходить по всем тестам в ручную, особенно когда их больше 20.

Заключение: мы создали наш первый проект на основе простейшего архетипа и поработали с инструментами, разобрали основные из них.

В следующей части подробно разберём pom.xml.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.