Переименование и сохранение Maven jar с зависимостями
Быстрый ответ
Да, это можно выполнить без особых сложностей. Чтобы переименовать jar-with-dependencies
, в разделе <build>
файла pom.xml
задайте тег <finalName>
. Если вы хотите присвоить файлу уникальное имя, используйте <classifier>
в конфигурации maven-assembly-plugin
. Вот пример:
<build>
<finalName>AppName</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<classifier>bundle</classifier>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
В результате генерируется AppName-bundle.jar
, который включает как <finalName>
, так и <classifier>
. Для более тонкой настройки обратитесь к следующим разделам.
Дополнительная настройка сборки с помощью assembly дескриптора
Чтобы настроить пользовательский assembly дескриптор, создайте файл jar-assembly.xml
со следующими инструкциями для сборки:
<assembly>
<id>custom-bundle</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
Этот файл укажите в конфигурации maven-assembly-plugin
, используя тег <descriptor>
. Чтобы не добавлять ID сборки к имени jar-файла, установите параметру <appendAssemblyId>
значение false
.
Установка соответствующего classifier
Для точной идентификации артефакта при установке или развертывании необходимо устанавливать соответствующее значение classifier:
<configuration>
<classifier>custom</classifier>
</configuration>
Настройка build и регион-специфических профилей
Управление различными build и регион-специфическими профилями можно осуществлять с помощью параметризации assembly.xml
:
<profiles>
<profile>
<id>region-specific</id>
<properties>
<assembly.descriptorId>region1</assembly.descriptorId>
</properties>
</profile>
</profiles>
Эти и другие настройки предлагают заметную гибкость.
Визуализация
Maven jar-with-dependencies
— это своеобразная упаковка (📦), содержащая ваше приложение (🏠) и все его зависимости (🛋️, 🖥️, 🐈):
Оригинальная упаковка: [🏠 + 🛋️ + 🖥️ + 🐈] = myapp-jar-with-dependencies.jar
При переименовании упаковка получает новый ярлык:
Новый ярлык: [🏠 + 🛋️ + 🖥️ + 🐈] = EstateInABox.jar
Чтобы изменить наименование в maven-assembly-plugin
, используйте:
<configuration>
<finalName>EstateInABox</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
Включение главного класса и манифеста
Чтобы создать полностью исполняемый jar-with-dependencies
, необходимо указать основной класс:
<archive>
<manifest>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
Выбор подходящих областей зависимостей
Выбор зависимостей, которые будут включены в пакет, контролируется через dependencySet
:
<dependencySet>
<scope>runtime</scope>
</dependencySet>
Изучение вариантов форматов вывода
С помощью formats
и fileSets
можно настроить структуру архива, чтобы получить нужную конфигурацию:
<formats>
<format>dir</format>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/resources</directory>
<outputDirectory>/resources</outputDirectory>
</fileSet>
</fileSets>