Створення виконуваного файлу JAR із залежностями за допомогою Maven

Maven

Упаковка проектів Maven в єдиний виконуваний файл JAR

Під час роботи з проектами Java часто необхідно запакувати свою програму в один виконуваний файл JAR для легкого розповсюдження. Maven, потужний інструмент автоматизації збірки, дозволяє розробникам включати всі необхідні залежності в цей єдиний вихідний JAR.

Ця стаття проведе вас через кроки, необхідні для налаштування вашого проекту Maven, щоб включити всі JAR-файли залежностей у ваш остаточний виконуваний файл JAR. Дотримуючись цих інструкцій, ви спростите процес розгортання та забезпечите безперебійну роботу вашої програми в різних середовищах.

Команда опис
<plugin> Визначає плагін Maven для використання під час процесу збирання. Плагіни можуть виконувати певні завдання, такі як компіляція коду або пакування проекту.
<groupId> Визначає ідентифікатор групи для проекту Maven, зазвичай зворотне доменне ім’я.
<artifactId> Визначає ідентифікатор артефакту, який є назвою проекту.
<version> Вказує на поточну версію проекту.
<build> Містить конфігурацію збірки для проекту, включаючи плагіни та ресурси.
<descriptorRef> Посилається на попередньо визначений дескриптор для використання плагіном збірки Maven, наприклад "jar-with-dependencies".
<mainClass> Визначає головний клас, який буде виконано під час запуску файлу JAR.
<execution> Визначає блок виконання в плагіні, вказуючи завдання, які потрібно виконувати на різних етапах збірки.
mvn clean package Команда для очищення проекту та упаковки його у файл JAR, включаючи всі залежності.
java -jar target/...jar Команда для запуску створеного файлу JAR із зазначенням шляху до JAR.

Створення та запуск виконуваного файлу JAR за допомогою Maven

Наведені вище сценарії демонструють, як налаштувати проект Maven, щоб упакувати всі його залежності в один виконуваний файл JAR. Перший скрипт — Maven файл, який містить конфігурацію проекту. У цьому файлі тег використовується для визначення плагіна складання Maven. Цей плагін має вирішальне значення для створення виконуваного файлу JAR, який містить усі залежності. The тег у конфігурації плагіна визначає використання jar-with-dependencies дескриптор, який гарантує, що всі залежності проекту упаковані в остаточний файл JAR. The тег всередині розділ є важливим, оскільки він повідомляє Maven, який клас містить основний метод для запуску під час виконання JAR.

The Блок у конфігурації плагіна – це місце, де відбувається дія. Це вказує на мету плагіна має бути виконано під час етап життєвого циклу складання. Це те, що запускає створення файлу JAR із залежностями. Другий сценарій — це проста інструкція командного рядка: mvn clean package. Ця команда очищає проект (видаляючи артефакти попередньої збірки), компілює вихідний код, запускає тести та пакує проект у файл JAR. Остаточний JAR-файл буде розміщено в каталогу проекту та названий відповідно до і зазначено в pom.xml.

Створення виконуваного файлу JAR із залежностями за допомогою Maven

Сценарій конфігурації Maven

<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.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Запуск команди Maven для упаковки JAR

Інструкції з командного рядка

mvn clean package
# This command will compile the code, run the tests, and create the JAR file
# The JAR file will include all dependencies specified in the pom.xml
# It will be located in the target directory of the project
# The final JAR file will be named my-app-1.0-SNAPSHOT-jar-with-dependencies.jar

# To run the JAR file, use the following command:
java -jar target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
# Ensure that the mainClass specified in the pom.xml is correct
# This will start your application with all dependencies included

Розширені методи Maven для пакувань залежностей

Окрім базової конфігурації для створення виконуваного JAR-файлу за допомогою Maven, існують додаткові методи, які можуть покращити процес збирання. Однією з таких технік є використання плагін замість підключати. Плагін Maven Shade пропонує розширені функції для створення uber-JAR (JAR із залежностями). Це дозволяє перейменовувати пакунки, щоб уникнути конфліктів шляху до класів, і забезпечує кращу обробку дублікатів класів і ресурсів. Крім того, він пропонує детальний контроль над тим, які залежності включено до остаточного JAR.

Іншим важливим аспектом є керування розміром файлу JAR. Великі файли JAR можуть бути громіздкими та повільними для передачі чи завантаження. The може допомогти в цьому, дозволяючи виключати непотрібні файли та класи, таким чином зменшуючи розмір остаточного JAR. Ви також можете налаштувати плагін для мінімізації JAR шляхом видалення несуттєвої інформації, такої як невикористовувані класи або зайві ресурси. Ці розширені конфігурації можуть бути особливо корисними під час роботи над великими проектами з численними залежностями.

  1. Як мені вказати головний клас у моєму JAR?
  2. Ви можете вказати головний клас за допомогою тег в межах розділ конфігурації плагіна Maven.
  3. Як я можу виключити певні залежності з остаточного JAR?
  4. Використовувати тег у конфігурації плагіна, щоб указати залежності, які не слід включати в остаточний JAR.
  5. Що таке uber-JAR?
  6. Uber-JAR — це файл JAR, який містить не лише ваш скомпільований код, але й усі його залежності.
  7. Як я можу уникнути конфліктів шляхів до класів у своєму JAR?
  8. The дозволяє перейменовувати пакунки в межах залежностей, щоб уникнути конфліктів.
  9. Як обробляти дублікати класів у залежностях?
  10. Налаштуйте для керування дублікатами класів і ресурсів, вказуючи, як слід обробляти дублікати в остаточному JAR.
  11. Чи можу я включити лише певні файли із залежності?
  12. Так, ви можете налаштувати або щоб включити лише певні файли із залежності.
  13. Як запустити упакований JAR?
  14. Використовувати команду, за якою йде шлях до вашого файлу JAR.
  15. Як я можу перевірити вміст мого файлу JAR?
  16. Ви можете використовувати команда для отримання списку вмісту файлу JAR.
  17. Що робити, якщо мій JAR-файл завеликий?
  18. Використовувати щоб виключити непотрібні файли та мінімізувати розмір JAR.

Підсумкові думки щодо виконуваних JAR-файлів Maven

Створення виконуваного файлу JAR із залежностями за допомогою Maven спрощує процес розгортання програм Java. Правильно налаштувавши файл і використовуючи такі плагіни, як Maven Assembly Plugin або Maven Shade Plugin, розробники можуть упакувати всі необхідні залежності в один файл JAR. Такий підхід гарантує безперебійну роботу програми в різних середовищах, що спрощує розповсюдження та виконання. Виконання цих кроків допоможе вам ефективно керувати залежностями вашого проекту та створювати надійні виконувані файли JAR.