webprogr.ru Новости

RSS

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...

{{toodo.preview}}

...
{{toodo.name}}

{{toodo.preview}}

далее..

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

смотреть..

toodo.name

{{toodo.preview}}

{{toodo.name}}

{{toodo.preview}}

перейти...


Последние новости

Maven: Плагины

Maven-плагины расширяют функциональность Maven и выполняют большую часть работы на этапах сборки. Характеристики:

Каждый плагин решает конкретную задачу: компиляция, запуск тестов, упаковка JAR/WAR, генерация отчетов, сборка Docker-образа и пр.

Примеры популярных плагинов:

maven-compiler-plugin – компиляция Java-кода (определяет, под какую Java компилировать, пути исходников и т.д.).

maven-surefire-plugin – запуск unit-тестов и генерация отчетов о тестах.

maven-jar-plugin / maven-assembly-plugin – создание JAR-файлов (или сборка расширенных архивов со сторонними зависимостями).

spring-boot-maven-plugin – упаковывает Spring Boot приложение в исполняемый JAR/War и может запускать его.

Плагины имеют goals (цели) – подзадачи. Эти цели можно привязывать к фазам жизненного цикла. Например, goal compile плагина компиляции привязан к фазе compile Maven по умолчанию.

Настройка плагинов происходит в разделе <build><plugins> POM-файла. Можно задать параметры работы плагина или отключить/заменить плагин по умолчанию.



Пояснение: Maven сам по себе предоставляет каркас сборки (жизненный цикл), но конкретная работа выполняется плагинами. Практически все фазы, кроме самых базовых, задействуют какой-либо плагин. При установке Maven в комплекте идет ряд плагинов по умолчанию (они называются plugins или mojos – Maven Old Java Objects). Например:

Фаза compile вызывает цели плагина maven-compiler-plugin (который берет все .java из src/main/java и компилирует в .class в target/classes). Если нужно изменить версию Java, используем параметр этого плагина (<maven.compiler.target> свойство или секция <configuration>).


Фаза test запускает maven-surefire-plugin:test, который ищет тестовые классы (по шаблону **Test.java или подобному) в src/test/java и выполняет их.


Фаза package применяет maven-jar-plugin:jar (для packaging jar), либо, если указано packaging war – плагин maven-war-plugin:war, и так далее.

Таким образом, большинство операций Maven делегирует плагинам. Сами плагины – это тоже Maven-артефакты, Maven скачает нужный плагин из репозитория при необходимости (например, впервые упаковывая проект в War, он загрузит maven-war-plugin, если его нет локально).
 
Разработчик может явно подключать плагины в POM, чтобы:

Настроить параметры (например, плагину компиляции указать <source>17</source> и <target>17</target> для использования Java 17).


Добавить новые плагины для дополнительных задач. Например, плагин maven-checkstyle-plugin для анализа кода на соответствие стилю, maven-javadoc-plugin для генерации документации из комментариев, docker-maven-plugin для сборки Docker-образа с приложением, и т.д.


Определить свои фазы или goals: хотя фазы фиксированы, вы можете привязать свой плагин к существующей фазе. Например, хотите сгенерировать исходники перед компиляцией – можно привязать какой-то генератор к фазе generate-sources.

Каждый Maven-плагин имеет одну или несколько целей (goals). При выполнении фаз Maven может запускать несколько целей разных плагинов. Иногда нужно запустить конкретный goal вне стандартных фаз – тогда в командной строке Maven используют нотацию mvn plugin:goal. Например, mvn dependency:tree вызовет цель tree плагина maven-dependency-plugin, которая выводит дерево зависимостей проекта. Или mvn surefire-report:report сгенерирует HTML-отчет о тестах. Но чаще goals запускаются через фазы автоматически.
 
В современных Java-проектах набор плагинов Maven подбирается под задачи проекта. Для Spring Boot приложения всегда подключается spring-boot-maven-plugin (он в фазе package перехватывает сборку, чтобы упаковать все зависимости внутрь одного исполняемого jar и сгенерировать скрипт запуска). Для проекта, которым надо запускать интеграционные тесты, добавят failsafe-plugin (цели bound к фазам integration-test и verify). Для публикации отчетов о покрытии кода – jacoco-maven-plugin (он instrumentирует код перед тестами, а потом собирает данные).
 
При работе с Maven важно следить за версиями плагинов – Maven может сам выбирать версии по умолчанию (из “super POM”), но зачастую их указывают явно для надежности (чтобы сборка была воспроизводима независимо от обновлений Maven). Maven-плагины тоже версионируются и публикуются в центральном репозитории.
 
Итак, плагины дают Maven гибкость: базовый Maven знает о фазах, а все остальное – отдельные модули. Добавляя или настраивая плагины, вы настраиваете процесс сборки под нужды проекта, оставаясь в рамках понятного жизненного цикла.

Рейтинг@Mail.ru