Crearea unui JAR executabil cu dependențe folosind Maven

Crearea unui JAR executabil cu dependențe folosind Maven
Crearea unui JAR executabil cu dependențe folosind Maven

Împachetarea proiectelor Maven într-un singur JAR executabil

Când lucrați cu proiecte Java, este adesea necesar să vă pachetați aplicația într-un singur fișier JAR executabil pentru o distribuție ușoară. Maven, un instrument puternic de automatizare a construcției, permite dezvoltatorilor să includă toate dependențele necesare în acest JAR unic de ieșire.

Acest articol vă va ghida prin pașii necesari pentru a configura proiectul dvs. Maven pentru a include toate JAR-urile de dependență în JAR-ul executabil final. Urmând aceste instrucțiuni, veți simplifica procesul de implementare și veți asigura că aplicația dumneavoastră rulează fără probleme în diferite medii.

Comanda Descriere
<plugin> Definește un plugin Maven de utilizat în timpul procesului de construire. Pluginurile pot executa sarcini specifice, cum ar fi compilarea codului sau împachetarea proiectului.
<groupId> Specifică identificatorul de grup pentru proiectul Maven, de obicei un nume de domeniu invers.
<artifactId> Definește identificatorul artefactului, care este numele proiectului.
<version> Indică versiunea curentă a proiectului.
<build> Conține configurația de construcție pentru proiect, inclusiv pluginuri și resurse.
<descriptorRef> Face referire la un descriptor predefinit pe care să-l folosească Maven Assembly Plugin, cum ar fi „jar-with-dependencies”.
<mainClass> Specifică clasa principală care trebuie executată atunci când este rulat fișierul JAR.
<execution> Definește un bloc de execuție în cadrul unui plugin, specificând sarcinile care trebuie efectuate la diferite faze de construcție.
mvn clean package Comanda pentru a curăța proiectul și a-l împacheta într-un fișier JAR, inclusiv toate dependențele.
java -jar target/...jar Comanda pentru a rula fișierul JAR generat, specificând calea către JAR.

Crearea și rularea unui JAR executabil cu Maven

Scripturile furnizate mai sus demonstrează cum să configurați un proiect Maven pentru a împacheta toate dependențele sale într-un singur fișier JAR executabil. Primul scenariu este un Maven pom.xml fișier, care conține configurația proiectului. În cadrul acestui fișier, <plugin> eticheta este folosită pentru a defini plugin-ul Maven Assembly. Acest plugin este crucial pentru crearea unui JAR executabil care include toate dependențele. The <descriptorRefs> eticheta din configurația pluginului specifică utilizarea jar-with-dependencies descriptor, care asigură că toate dependențele proiectului sunt împachetate în fișierul JAR final. The <mainClass> eticheta în interiorul <manifest> secțiunea este esențială, deoarece îi spune lui Maven care clasă conține metoda principală de rulat atunci când JAR-ul este executat.

The <execution> bloc în interiorul configurației pluginului este locul unde are loc acțiunea. Specifică că scopul pluginului single ar trebui executat în timpul package faza ciclului de viață al construcției. Acesta este ceea ce declanșează crearea fișierului JAR cu dependențe. Al doilea script este o instrucțiune simplă în linia de comandă: mvn clean package. Această comandă curăță proiectul (eliminând artefactele anterioare de construcție), compilează codul sursă, rulează teste și împachetează proiectul într-un fișier JAR. Fișierul JAR final va fi localizat în fișierul target directorul proiectului și numit conform artifactId și version specificate în pom.xml.

Crearea unui fișier JAR executabil cu dependențe folosind Maven

Scriptul de configurare 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>

Rularea comenzii Maven pentru a împacheta JAR

Instrucțiuni pentru linia de comandă

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

Tehnici Maven avansate pentru dependențe de ambalare

Dincolo de configurația de bază pentru crearea unui JAR executabil cu Maven, există tehnici suplimentare care vă pot îmbunătăți procesul de construire. O astfel de tehnică implică utilizarea shade plugin în loc de assembly conecteaza. Pluginul Maven Shade oferă funcții mai avansate pentru crearea de uber-JAR (JAR-uri cu dependențe incluse). Vă permite să redenumiți pachetele pentru a evita conflictele în căile de clasă și oferă o gestionare mai bună a claselor și resurselor duplicate. În plus, oferă un control fin asupra dependențelor care sunt incluse în JAR-ul final.

Un alt aspect important este gestionarea dimensiunii fișierului dvs. JAR. Fișierele JAR mari pot fi greoaie și lent de transferat sau încărcat. The maven-shade-plugin vă poate ajuta cu acest lucru, permițându-vă să excludeți fișierele și clasele inutile, reducând astfel dimensiunea JAR-ului final. De asemenea, puteți configura pluginul pentru a minimiza JAR-ul prin eliminarea informațiilor neesențiale, cum ar fi clasele neutilizate sau resursele redundante. Aceste configurații avansate pot fi deosebit de utile atunci când lucrați la proiecte mari cu numeroase dependențe.

Întrebări și soluții comune pentru JAR-urile executabile Maven

  1. Cum specific clasa principală în JAR-ul meu?
  2. Puteți specifica clasa principală folosind <mainClass> eticheta în interiorul <manifest> secțiunea de configurare a pluginului Maven.
  3. Cum pot exclude anumite dependențe din JAR-ul final?
  4. Folosește excludes etichetă în configurația pluginului pentru a specifica dependențele care nu ar trebui incluse în JAR-ul final.
  5. Ce este un uber-JAR?
  6. Un uber-JAR este un fișier JAR care conține nu numai codul dvs. compilat, ci și toate dependențele sale.
  7. Cum pot evita conflictele de classpath în JAR-ul meu?
  8. The maven-shade-plugin vă permite să redenumiți pachetele din dependențe pentru a evita conflictele.
  9. Cum gestionez clasele duplicate în dependențe?
  10. Configurați maven-shade-plugin pentru a gestiona clasele și resursele duplicate prin specificarea modului în care trebuie tratate duplicatele în JAR-ul final.
  11. Pot include doar anumite fișiere dintr-o dependență?
  12. Da, puteți configura maven-assembly-plugin sau maven-shade-plugin pentru a include numai anumite fișiere dintr-o dependență.
  13. Cum rulez JAR-ul ambalat?
  14. Folosește java -jar comanda urmată de calea către fișierul dvs. JAR.
  15. Cum pot verifica conținutul fișierului meu JAR?
  16. Puteți folosi jar -tf comandă pentru a lista conținutul fișierului JAR.
  17. Ce se întâmplă dacă fișierul meu JAR este prea mare?
  18. Folosește maven-shade-plugin pentru a exclude fișierele inutile și pentru a minimiza dimensiunea JAR.

Concluzii despre JAR-urile Maven Executable

Crearea unui JAR executabil cu dependențe folosind Maven simplifică procesul de implementare pentru aplicațiile Java. Prin configurarea corectă a pom.xml și utilizând pluginuri precum pluginul Maven Assembly sau Pluginul Maven Shade, dezvoltatorii pot împacheta toate dependențele necesare într-un singur fișier JAR. Această abordare asigură că aplicația poate rula fără probleme în diferite medii, făcând distribuția și execuția simplă. Urmărirea acestor pași vă va ajuta să gestionați eficient dependențele proiectului și să creați fișiere JAR fiabile și executabile.