Паковање Мавен пројеката у један извршни ЈАР
Када радите са Јава пројектима, често је потребно да своју апликацију упакујете у једну извршну ЈАР датотеку ради лакше дистрибуције. Мавен, моћан алат за аутоматизацију изградње, омогућава програмерима да укључе све неопходне зависности у овај ЈАР са једним излазом.
Овај чланак ће вас водити кроз кораке потребне да конфигуришете свој Мавен пројекат да укључи све зависне ЈАР-ове у ваш коначни извршни ЈАР. Пратећи ова упутства, поједноставићете процес постављања и обезбедити да ваша апликација неометано ради у различитим окружењима.
Цомманд | Опис |
---|---|
<plugin> | Дефинише Мавен додатак који ће се користити током процеса прављења. Додаци могу да извршавају специфичне задатке као што је компајлирање кода или паковање пројекта. |
<groupId> | Одређује идентификатор групе за Мавен пројекат, обично обрнуто име домена. |
<artifactId> | Дефинише идентификатор артефакта, што је име пројекта. |
<version> | Означава тренутну верзију пројекта. |
<build> | Садржи конфигурацију изградње за пројекат, укључујући додатке и ресурсе. |
<descriptorRef> | Реферира унапред дефинисани дескриптор за Мавен Ассембли Плугин који треба да користи, као што је „јар-са-зависностима“. |
<mainClass> | Одређује главну класу која ће се извршити када се ЈАР датотека покрене. |
<execution> | Дефинише блок за извршавање унутар додатка, наводећи задатке који ће се извршити у различитим фазама изградње. |
mvn clean package | Наредба за чишћење пројекта и паковање у ЈАР датотеку, укључујући све зависности. |
java -jar target/...jar | Команда за покретање генерисане ЈАР датотеке, наводећи путању до ЈАР-а. |
Креирање и покретање извршног ЈАР-а са Мавен-ом
Горе наведене скрипте показују како да конфигуришете Мавен пројекат да спакује све своје зависности у једну извршну ЈАР датотеку. Први сценарио је Мавен pom.xml фајл, који садржи конфигурацију пројекта. У оквиру ове датотеке, <plugin> таг се користи да дефинише Мавен Ассембли Плугин. Овај додатак је кључан за креирање извршног ЈАР-а који укључује све зависности. Тхе <descriptorRefs> таг унутар конфигурације додатка специфицира употребу jar-with-dependencies дескриптор, који осигурава да су све зависности пројекта упаковане у коначну ЈАР датотеку. Тхе <mainClass> ознака унутар <manifest> одељак је од суштинског значаја јер говори Мавену која класа садржи главни метод за покретање када се ЈАР изврши.
Тхе <execution> блок унутар конфигурације додатка је место где се радња дешава. Наводи да је циљ додатка single треба да се изврши током package фаза животног циклуса изградње. То је оно што покреће креирање ЈАР датотеке са зависностима. Друга скрипта је једноставна инструкција командне линије: mvn clean package. Ова команда чисти пројекат (уклања претходне артефакте изградње), компајлира изворни код, покреће тестове и пакује пројекат у ЈАР датотеку. Коначна ЈАР датотека ће се налазити у target именик пројекта и именован према artifactId и version наведено у 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.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>
Покретање команде Мавен за паковање ЈАР-а
Упутства за командну линију
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
Напредне Мавен технике за зависности од паковања
Осим основне конфигурације за креирање извршног ЈАР-а са Мавен-ом, постоје додатне технике које могу побољшати ваш процес изградње. Једна таква техника укључује коришћење shade додатак уместо assembly повезати. Мавен Схаде додатак нуди напредније функције за креирање убер-ЈАР-ова (ЈАР-ова са укљученим зависностима). Омогућава вам да преименујете пакете да бисте избегли сукобе путева до класа и пружа боље руковање дуплираним класама и ресурсима. Поред тога, нуди детаљну контролу над тим које су зависности укључене у коначни ЈАР.
Још један важан аспект је управљање величином ваше ЈАР датотеке. Велике ЈАР датотеке могу бити гломазне и споре за пренос или учитавање. Тхе maven-shade-plugin може помоћи у овоме тако што вам омогућава да искључите непотребне датотеке и класе, чиме се смањује величина коначног ЈАР-а. Такође можете да конфигуришете додатак да минимизира ЈАР тако што ћете уклонити небитне информације као што су неискоришћене класе или сувишни ресурси. Ове напредне конфигурације могу бити посебно корисне када радите на великим пројектима са бројним зависностима.
Уобичајена питања и решења за Мавен извршне ЈАР-ове
- Како да наведем главну класу у свом ЈАР-у?
- Можете одредити главну класу користећи <mainClass> таг унутар <manifest> одељак конфигурације Мавен додатка.
- Како могу да изузмем одређене зависности из коначног ЈАР-а?
- Користити excludes таг у конфигурацији додатка да бисте одредили зависности које не би требало да буду укључене у коначни ЈАР.
- Шта је убер-ЈАР?
- Убер-ЈАР је ЈАР датотека која садржи не само ваш компајлирани код већ и све његове зависности.
- Како могу да избегнем сукобе путева класа у свом ЈАР-у?
- Тхе maven-shade-plugin омогућава вам да преименујете пакете унутар зависности да бисте избегли конфликте.
- Како да рукујем дуплим класама у зависностима?
- Конфигуришите maven-shade-plugin да управља дупликатима класа и ресурса наводећи како треба руковати дупликатима у коначном ЈАР-у.
- Могу ли да укључим само одређене датотеке из зависности?
- Да, можете конфигурисати maven-assembly-plugin или maven-shade-plugin да укључује само одређене датотеке из зависности.
- Како да покренем упаковани ЈАР?
- Користити java -jar команду праћено путањом до ваше ЈАР датотеке.
- Како могу да проверим садржај своје ЈАР датотеке?
- Можете користити jar -tf команду за листање садржаја ЈАР датотеке.
- Шта ако је моја ЈАР датотека превелика?
- Користити maven-shade-plugin да бисте искључили непотребне датотеке и минимизирали величину ЈАР-а.
Закључна размишљања о Мавен извршним ЈАР-овима
Креирање извршног ЈАР-а са зависностима помоћу Мавен-а поједностављује процес постављања Јава апликација. Правилним конфигурисањем pom.xml датотеку и користећи додатке као што су Мавен Ассембли Плугин или Мавен Схаде Плугин, програмери могу да упакују све неопходне зависности у једну ЈАР датотеку. Овај приступ осигурава да апликација може да ради беспрекорно у различитим окружењима, чинећи дистрибуцију и извршавање једноставним. Праћење ових корака ће вам помоћи да ефикасно управљате зависностима вашег пројекта и креирате поуздане, извршне ЈАР датотеке.