Maven. Часть 2 – Dependency

В этом уроке я вам покажу основную силу Maven, а именно как создать проект, который можно разрабатывать целой командой и при этом не потребуется каждому члену команды подключать необходимые библиотеки к проекту, давайте начнем.
И так начнем с того, зачем вам нужен Maven? В статье Maven. Часть 1 – Знакомство и настройка мы уже немного разобрали что это и как настроить.

Тут я хочу вам показать как использовать данный инструмент, а покажу вам его использование на примере JUnit тестирования.

 Шаг 1. Создание Maven проекта

Запускаем нашу всем любимую Intellij IDEA и нажимаем File->Create New Project

 

Шаг 2.

Теперь в корне проекта вы должны увидеть файл pom.xml.

И вот что вы должны видеть:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <!-- версия модели для POM-ов Maven 2.x всегда 4.0.0 -->
    <modelVersion>4.0.0</modelVersion>

    <!--  
       координаты проекта, то есть набор значений, который
       позволяет однозначно идентифицировать этот проект 
    -->
    <groupId>NewMavenProject</groupId>
    <artifactId>NewMavenProject</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

С помощью этого файла и осуществляется настройка сборки вашего проекта. К примеру вам нужно собрать проект в *.jar файл, для этого вам достаточно указать это в pom.xml. Как собрать проект в jar файл вы можете посмотреть тут.

Это файл изначально имеет default (поумолчанию) структуру.

Шаг 3. Используем Dependency

Что же такое dependency и для чего они нужны?

Dependency — это зависимости от библиотек, а если точней, то это и есть библиотека, которую вы бы хотели подключить к проекту.

Рассмотрим на базовом шаблоне:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>

  <!-- зависимости от библиотек -->
  <dependencies>
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
    </dependency>
  </dependencies> 

</project>

В выше приведенном примере я продемонстрировал подключение библиотеки JUnit 4.11 к проекту, теперь при сборке проекта эта библиотека упакуется в мой *.jar или *.war архив, а также теперь мы в наших классах можем обращаться к объектам библиотеки JUnit.

<dependencies> — тут мы размещаем список dependency (библиотек), которые используются в проекте;

<dependency> — библиотека используемая проектом;

<groupId> — идентификатор группы библиотеки;

<artifactId> — артефакт (библиотека);

<version> — версия библиотеки;

<scope> — этап использования.

Шаг 4. Структура проекта

Стандартная структура каталогов:

Стандартная структура каталогов — одна из реализаций этого принципа.

Поскольку проект её придерживается, отпадает необходимость специфицировать пути к файлам, что сильно упрощает pom.xml.

Следующая структура показывает важнейшие каталоги.

Корневой каталог проекта:

— pom.xml и все дальнейшие подкаталоги;

— src: все исходные файлы;

src/main: исходные файлы собственно для продукта;

src/main/javaJava-исходный текст;

src/main/resources: другие файлы, которые используются при компиляции или исполнении, например Properties-файлы;

src/test: исходные файлы, необходимые для организации автоматического тестирования;

src/test/java: JUnit-тест-задания для автоматического тестирования;

target: все создаваемые в процессе работы Мавена файлы;

target/classes: компилированные Java-классы.

Шаг 5. Жизненный цикл

Жизненный цикл проекта — это список поименованных фаз, определяющий порядок действий при его построении.

Maven использует по умолчанию следующий жизненный цикл:

1) archetype — создание темплейта и обработка ресурсов. На этой фазе разрешаются и, при необходимости, скачиваются из интернета зависимости;

2) compile — компиляция;

3) обработка тестовых ресурсов (например — скачивается из интернета JUnit-пакет);

4) компиляция тестов (тестирующие классы не передаются конечным пользователям);

5) test — тестирование;

6) package — упаковка (обычно речь идёт о создании JAR— или WAR-файла);

7) install — инсталляция проекта в локальном Maven-репозитории (теперь он доступен как модуль для других локальных проектов);

8) deploy — инсталляция в удаленном Maven-репозитории (теперь стабильная версия проекта доступна широкому кругу разработчиков).

Maven имеет также стандартный жизненный цикл для чистки (cleaning) и для генерации его страницы (site). Если бы ‘clean’ было частью обычного жизненного цикла, проект подвергался бы чистке при каждом построении, что нежелательно.

Стандартные жизненные циклы могут быть существенно дополнены Maven-плагинами и Maven-архетипами.

Maven-плагины позволяют вставлять в стандартный цикл новые шаги (например, распределение на сервер приложений) или расширять существующие шаги. Maven-архетипы представляют собой заготовки для различнейших программных пакетов (если они отвечают стандартам Maven-структуры).

Урок создан: 22 марта 2013 | Просмотров: 49694 | Автор: Александр Барчук | Правила перепечатки


Добавить комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.

Комментарии:

  • 01 августа 2013 в 21:28

    Юра

    Можно ли перевести проект с анта на мавен?

    • 01 августа 2013 в 22:04

      Александр Барчук

      Да, можно. Но все ручками нужно переводить.

      • 09 января 2014 в 09:50

        Лена

        Вы забыли написать об исключениях в зависимостях .

    • 02 сентября 2015 в 02:57

      Sančezz

      Add framework support -> Maven

      на моем простом учебном примере структура папок перестроилась под мавеновскую, но вот pom.xml все же пришлось доводить до ума руками

  • 16 января 2017 в 20:52

    Артем

    Во второй xml-ке наверное теги лишние.