Рубріки: Теория

Maven Java: как установить фреймворк и разобраться с плагинами

Ольга Змерзла

Maven является инструментом с открытым исходным кодом, который необходим для построения, управления и автоматизации Java-проектов. Как и большинство фреймворков, Maven создан для решения задач, с которыми разработчики сталкиваются ежедневно. Инструмент особенно полезен для новичков. 

Maven может создавать собственную структуру проектов, облегчает процесс подключения необходимых библиотек, управляет отчетностями, зависимостями и документацией. Java-программисту не нужно уделять внимание каждому из этапов сборки проекта — все необходимые параметры фреймворка уже настроены по умолчанию.

Пошаговая установка Maven

1. Для установки фреймворка скачайте его актуальную версию. Минимально необходимое свободное место на диске — 500 Мб.

2. Распакованный архив переместите в удобную для вас директорию. В Windows путь к Maven может выглядеть как C:\Program Files\maven\, в Linux — /opt/maven.

3. Введите mvn -version в командную строку, чтобы проверить корректность установки фреймворка.

4. Далее создайте новый проект в IntelliJIDEA.

Создание нового проекта

5. Заполните поля в появившемся диалоговом окне.

Заполните поля в диалоговом окне

Проект также можно создать в удобном для вас месте. Его структура выглядит так:

  • pom.xml — файл, который полностью управляет фреймворком Maven;
  • src/main/java — папка, в которой находятся все Java-классы;
  • src/main/resources — папка, в которой находятся таблицы стилей, веб-страницы, изображения, используемые приложением.

Проект можно создать в удобном для вас месте

Как управлять зависимостями в Maven

Dependency manager в Maven обеспечивает проект необходимыми для работы библиотеками. Просто добавьте их в список зависимостей фреймворка.

Например:

Для простой и удобной работы с файлами добавим библиотеку Apache Commons IO. Для этого в pom.xml необходимо добавить несколько строк:

<dependency>

   <groupId>commons-io</groupId>

   <artifactId>commons-io</artifactId>

   <version>2.6</version>

</dependency>

После их добавления файл будет выглядеть так:

<?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">

   <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>

   <artifactId>example</artifactId>

   <version>1.0-SNAPSHOT</version>


   <dependencies>

       <dependency>

           <groupId>commons-io</groupId>

           <artifactId>commons-io</artifactId>

           <version>2.6</version>

       </dependency>

   </dependencies>

</project>

Чтобы библиотека была готова к использованию, необходимо разрешить IntelliJ IDEA импортировать зависимость.

import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {

   public static void main(String[] args) {

       File tempDirectory = FileUtils.getTempDirectory();
   }
}

Все последующие зависимости также записываются в <dependencies/>. Их можно располагать в любой последовательности.

Информацию о библиотеках можно узнать на сайте самой библиотеки или же в Maven-репозитории.

Какими бывают Maven-репозитории

Maven-репозиторий — это директория, в которой находятся плагины, библиотеки, JAR и другие артефакты, необходимые для работы Maven.

Виды репозиториев:

  • Централизованный. Вклад сообщества Maven. Здесь находятся все самые популярные и часто используемые библиотеки. Если Maven не находит нужную библиотеку в локальном репозитории, он обращается к центральному.
  • Локальный. Директория, которая находится на локальном компьютере пользователя и хранит зависимости проекта. Локальный репозиторий по умолчанию создается в %USER_HOME%.
  • Удаленный. Настраивается во избежание ошибок. Репозиторий необходим на случай, если Maven не нашел необходимые зависимости в централизованном репозитории. Для настройки удаленного репозитория нужно внести изменения в pom.xml:
<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">

   <modelVersion>4.0.0</modelVersion>

   <groupId>com.companyname.projectgroup</groupId>

   <artifactId>Tutorials</artifactId>

   <version>1.0</version>

   <dependencies>

      <dependency>

         <groupId>net.proselyte.private-lib</groupId>

         <artifactId>private-lib</artifactId>

         <version>1.0.0</version>

      </dependency>

   <dependencies>

   <repositories>

      <repository>

         <id>proselyte.lib1</id>

         <url>http://download.proselyte.net/maven2/lib1</url>

      </repository>

      <repository>

         <id>proselyte.lib2</id>

         <url>http://download.proselyte.net/maven2/lib2</url>

      </repository>

   </repositories>

</project>

Как собрать Java-проект с помощью Maven

Сборка Java-проекта в Maven состоит из 9 фаз:

1. Clean — удаление файлов из каталога target;

2. Validate — проверка данных, необходимых для сборки;

3. Compile — компиляция файлов;

4. Test — запуск тестов;

5. Package — упаковка скомпилированных файлов в архивы;

6. Verify — верификация упакованных файлов;

7. Install — установка в локальный репозиторий;

8. Site — создание документации к проекту;

9. Deploy — копирование архива в удаленный репозиторий.

Запустить каждую из фаз можно с помощью командной строки или Intellij IDEA.

Сборка Java-проекта в Maven состоит из 9 фаз

Плагины Maven

Плагины Maven используются для создания JAR-, WAR-файлов, юнит-тестов кода, создания документации и отчетов, компиляции файлов.

Плагины сборки конфигурируются в файле pom.xml внутри тегов <build></build>, а плагины отчетов — в <reporting></reporting>.

Самые распространенные и часто используемые плагины:

  • Jar. Формирует JAR-файл проекта.

Например:

<plugin>

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>maven-jar-plugin</artifactId>

  <version>2.3.2</version>

  <configuration>

    <finalName>myJar</finalName>                   

  </configuration>

</plugin>
  • Assembly. Сборка артефактов в пакеты.

Пример сборки JAR-пакета:

<plugin>

  <artifactId>maven-assembly-plugin</artifactId>

   <executions>

     <execution>

       <phase>package</phase>

       <goals>

         <goal>single</goal>

       </goals>

     </execution>

   </executions>

   <configuration>

     <descriptorRefs>

       <descriptorRef>jar-with-dependencies</descriptorRef>

     </descriptorRefs>

   </configuration>

</plugin>
  • Clean. Удаляет директорию target после сборки.

Пример с параметром filesets:

<plugin>

    <artifactId>maven-clean-plugin</artifactId>

    <version>3.0.0</version>

    <configuration>

        <filesets>

            <fileset>

                <directory>output-resources</directory>

            </fileset>

        </filesets>

    </configuration>

</plugin>
  • Surefire. Запуск тестов и отчетов.

Например:

<plugin>

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>maven-surefire-plugin</artifactId>

  <version>2.20</version>

  <configuration>

    <includes>

      <include>Sample.java</include>

    </includes>

    <excludes>

      <exclude>**/TestCircle.java</exclude>

      <exclude>**/TestSquare.java</exclude>

    </excludes>

  </configuration>

</plugin>
  • Javadoc. Генерация javadoc.

Например, для создания автономной документации для проекта плагин Javadoc необходимо добавить в раздел <build> файла pom.xml.

<build>

<plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-javadoc-plugin</artifactId>

            <version>2.9.1</version>

            <executions>

                <execution>

                    <id>attach-javadocs</id>

                    <goals>

                        <goal>jar</goal>

                    </goals>

                </execution>

            </executions>

            <configuration>

                <docfilessubdirs>true</docfilessubdirs>

            </configuration>

</plugin>

</build>
  • Compiler. Компиляция исходных файлов.

Например:

<plugin>

  <groupId>org.apache.maven.plugins</groupId>

  <artifactId>maven-compiler-plugin</artifactId>

  <version>3.6.2</version>

  <configuration>

    <source>1.8</source>

    <target>1.8</target>

  </configuration>

</plugin>
  • Antrun. Запуск задач ant.

Например, у плагина Antrun должен быть <target>.

<plugins>

      <plugin>

        <artifactId>maven-antrun-plugin</artifactId>

        <version>3.0.0</version>

        <executions>

          <execution>

            <phase> <!-- a lifecycle phase --> </phase>

            <configuration>

              <target>

                <!--

                 Разместите здесь любую задачу Ant.

                -->

              </target>

            </configuration>

            <goals>

              <goal>run</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

    </plugins>

Полный список плагинов Maven можно найти здесь.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023