Maven. Плагины для сборки проектов

Сборка проектов давно уже автоматизированный процесс. на сегодняшний день самые известные сборщики это Gradle, Ant и Maven, о последнем речь и пойдет. Рассмотрим ниже основные плагины maven, такие как Maven Compiler plugin, Maven JAR Plugin, Maven Dependency Plugin, Maven Resources Plugin и способы их конфигурации.

Настройка MAVEN компилятора

Maven Compiler plugin
  • Позволяющий управлять версией компилятора.
  • Позволяет сконфигурировать настройки компилятора.

Самый популярный плагин. Пример ниже говорит компилятору какие версии java использовать для проверки кода и для компиляции.

Из более серьезных возможностей, плагин позволяет указать путь к компилятору, запустить компилирование в отдельной JVM, задавать аргументы компилирования и даже выполнить компилирование не-java компилятором.

Создаем JAR файл и файл манифеста.

Maven JAR Plugin

Позволяет создать манифест и jar-файл, и описать дополнительные ресурсы, которые необходимо включить в jar-файл.

Дополнительные ресурсы, включаемые в jar, описываются тегами <include> и<exclude> (для включения и исключения соответственно):

Для создания манифеста плагин предоставляет достаточно много вариантов. Со всеми возможностями лучше ознакомиться на официальном сайте. Здесь я приведу лишь самые распространенные (на мой взгляд и опыт) из них.

1. Самое простое решение — указать уже существующий файл манифеста:

2. описать манифест в настройках плагина. Для наглядности сразу приведу простой пример конфигурации плагина:

Параметр <addClasspath/> включает добавление classpath-а в манифест.
<classpathPrefix/> позволяет дописывать префикс перед каждым ресурсом. Удобно, если вы размещаете ваши зависимости в отдельной папке, на пример lib.
<mainClass/> очевидно позволяет указать главный исполняемый класс.

Пример результата:

Class-Path: lib/leodev-utils-1.1.jar

Помимо автоматической генерации classpath-а, можно описать его вручную:

В данном примере classpath генерируется по маске, в которой значения $${artifact.groupIdPath}, $${artifact.artifactId} и $${artifact.version} заменяются на соответствующие значения параметров зависимостей, описанных в блоке <dependencies>.

Пример результата:

Class-Path: WEB-INF/lib/ru/leodev/leodev-utils-4.7.jar

Или генерировать в соответствии с традициями maven:

Пример результата:

Class-Path: Class-Path: lib/ru/leodev/leodev-utils/4.7/leodev-utils-4.7.jar

Как скопировать зависимости и ресурсы с помощью Maven

Maven Resources Plugin

Помимо копирования ресурсов во время сборки проекта, я пользовался этим плагином на стадии инсталляции, для копирования проекта на сервер.

<outputDirectory> описывает целевую директорию, в которую которую будет происходить копирование. В блоке <resources> перечисляются объекты для копирования. Синтаксис перечисления объектов для включения/исключения аналогичен используемому в Maven JAR Plugin.

Параметр <filtering> позволяет творить всякие чудеса, почитать о которых можно здесь.
Вкратце, если у вас есть некоторый текстовый ресурс hello.txt с содержимым вида Hello ${name}, то в результате копирования этого ресурса с флагом filtering = true, в созданной копии значение ${name} будет заменено названием проекта указанным в pom.xml.

В моем случае я подменял jndiName во время сборки проекта. Это позволило заказчику не шарить jndiName и не вписывать его в варку хардкодом, а задавать его во время сборки проекта, в нашем случае использовались скрипты jenkins.

Авторы рекомендуют не использовать filtering с бинарными файлами вроде изображений.

источник:

Подписаться
Уведомлять о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
старым
новым колличеству голосов
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Leo Dev Blog | LD
Обзор конфиденциальности

На сайте используются обязательные и аналитические файлы cookie.

Обязательные cookie необходимы для корректной работы сайта.

Аналитические cookie используются для анализа посещаемости и улучшения работы сайта.

Вы можете изменить настройки использования cookie.