Ustvarjanje izvršljive datoteke JAR z odvisnostmi z uporabo programa Maven

Ustvarjanje izvršljive datoteke JAR z odvisnostmi z uporabo programa Maven
Ustvarjanje izvršljive datoteke JAR z odvisnostmi z uporabo programa Maven

Pakiranje projektov Maven v eno samo izvršljivo datoteko JAR

Pri delu s projekti Java je pogosto treba vašo aplikacijo zapakirati v eno samo izvršljivo datoteko JAR za enostavno distribucijo. Maven, zmogljivo orodje za avtomatizacijo gradnje, omogoča razvijalcem, da vključijo vse potrebne odvisnosti v ta en sam izhodni JAR.

Ta članek vas bo vodil skozi korake, ki so potrebni za konfiguracijo vašega projekta Maven za vključitev vseh odvisnosti JAR v vašo končno izvršljivo datoteko JAR. Z upoštevanjem teh navodil boste poenostavili postopek uvajanja in zagotovili nemoteno delovanje vaše aplikacije v različnih okoljih.

Ukaz Opis
<plugin> Definira vtičnik Maven za uporabo med gradnjo. Vtičniki lahko izvajajo posebne naloge, kot je prevajanje kode ali pakiranje projekta.
<groupId> Podaja identifikator skupine za projekt Maven, običajno ime obratne domene.
<artifactId> Določa identifikator artefakta, ki je ime projekta.
<version> Označuje trenutno različico projekta.
<build> Vsebuje konfiguracijo gradnje za projekt, vključno z vtičniki in viri.
<descriptorRef> Sklicuje se na vnaprej določen deskriptor za uporabo vtičnika Maven Assembly, kot je "jar-with-dependencies".
<mainClass> Podaja glavni razred, ki naj se izvede, ko se zažene datoteka JAR.
<execution> Definira izvedbeni blok znotraj vtičnika in določa naloge, ki jih je treba izvesti v različnih fazah gradnje.
mvn clean package Ukaz za čiščenje projekta in njegovo pakiranje v datoteko JAR, vključno z vsemi odvisnostmi.
java -jar target/...jar Ukaz za zagon ustvarjene datoteke JAR z navedbo poti do JAR.

Ustvarjanje in zagon izvršljive datoteke JAR z Mavenom

Zgornji skripti prikazujejo, kako konfigurirati projekt Maven za pakiranje vseh njegovih odvisnosti v eno samo izvršljivo datoteko JAR. Prvi scenarij je Maven pom.xml datoteko, ki vsebuje konfiguracijo projekta. V tej datoteki je <plugin> se uporablja za definiranje vtičnika Maven Assembly. Ta vtičnik je ključnega pomena za ustvarjanje izvedljive datoteke JAR, ki vključuje vse odvisnosti. The <descriptorRefs> znotraj konfiguracije vtičnika določa uporabo jar-with-dependencies deskriptorja, ki zagotavlja, da so vse odvisnosti projekta zapakirane v končno datoteko JAR. The <mainClass> oznako znotraj <manifest> razdelek je bistvenega pomena, saj Mavenu pove, kateri razred vsebuje glavno metodo, ki naj se zažene, ko se izvede JAR.

The <execution> blok znotraj konfiguracije vtičnika je tam, kjer se zgodi dejanje. Določa, da je cilj vtičnika single je treba izvesti med package fazi življenjskega cikla gradnje. To je tisto, kar sproži ustvarjanje datoteke JAR z odvisnostmi. Drugi skript je preprosto navodilo ukazne vrstice: mvn clean package. Ta ukaz očisti projekt (odstrani prejšnje artefakte gradnje), prevede izvorno kodo, zažene preizkuse in zapakira projekt v datoteko JAR. Končna datoteka JAR se bo nahajala v target imenik projekta in poimenovan v skladu z artifactId in version določeno v pom.xml.

Ustvarjanje izvršljive datoteke JAR z odvisnostmi z uporabo programa Maven

Konfiguracijski skript 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>

Izvajanje ukaza Maven za pakiranje JAR

Navodila za ukazno vrstico

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

Napredne tehnike Maven za odvisnosti od pakiranja

Poleg osnovne konfiguracije za ustvarjanje izvedljive datoteke JAR z Mavenom obstajajo dodatne tehnike, ki lahko izboljšajo vaš postopek gradnje. Ena takšnih tehnik vključuje uporabo shade plugin namesto assembly vključiti. Vtičnik Maven Shade ponuja naprednejše funkcije za ustvarjanje uber-JAR (JAR z vključenimi odvisnostmi). Omogoča vam preimenovanje paketov, da se izognete konfliktom v razrednih poteh, in zagotavlja boljše ravnanje s podvojenimi razredi in viri. Poleg tega ponuja natančen nadzor nad tem, katere odvisnosti so vključene v končni JAR.

Drug pomemben vidik je upravljanje velikosti vaše datoteke JAR. Velike datoteke JAR so lahko okorne in počasne za prenos ali nalaganje. The maven-shade-plugin lahko pri tem pomaga tako, da vam omogoči izključitev nepotrebnih datotek in razredov ter tako zmanjša velikost končne datoteke JAR. Vtičnik lahko konfigurirate tudi tako, da minimizira JAR z odstranitvijo nebistvenih informacij, kot so neuporabljeni razredi ali odvečni viri. Te napredne konfiguracije so lahko še posebej uporabne pri delu na velikih projektih s številnimi odvisnostmi.

Pogosta vprašanja in rešitve za izvršljive datoteke JAR Maven

  1. Kako določim glavni razred v svojem JAR?
  2. Glavni razred lahko določite z uporabo <mainClass> oznako znotraj <manifest> razdelek konfiguracije vtičnika Maven.
  3. Kako lahko iz končne JAR izključim določene odvisnosti?
  4. Uporabi excludes znotraj konfiguracije vtičnika, da določite odvisnosti, ki ne smejo biti vključene v končni JAR.
  5. Kaj je uber-JAR?
  6. Uber-JAR je datoteka JAR, ki ne vsebuje le vaše prevedene kode, ampak tudi vse njene odvisnosti.
  7. Kako se lahko izognem konfliktom razrednih poti v svojem JAR?
  8. The maven-shade-plugin omogoča preimenovanje paketov znotraj odvisnosti, da se izognete sporom.
  9. Kako ravnam s podvojenimi razredi v odvisnostih?
  10. Konfigurirajte maven-shade-plugin za upravljanje podvojenih razredov in virov tako, da določite, kako je treba obravnavati dvojnike v končni JAR.
  11. Ali lahko vključim samo določene datoteke iz odvisnosti?
  12. Da, lahko konfigurirate maven-assembly-plugin oz maven-shade-plugin da vključite samo določene datoteke iz odvisnosti.
  13. Kako zaženem zapakiran JAR?
  14. Uporabi java -jar ukaz, ki mu sledi pot do vaše datoteke JAR.
  15. Kako lahko preverim vsebino svoje datoteke JAR?
  16. Lahko uporabite jar -tf ukaz za seznam vsebine datoteke JAR.
  17. Kaj pa, če je moja datoteka JAR prevelika?
  18. Uporabi maven-shade-plugin da izključite nepotrebne datoteke in zmanjšate velikost JAR.

Zaključne misli o izvršljivih datotekah JAR Maven

Ustvarjanje izvedljive datoteke JAR z odvisnostmi z uporabo programa Maven poenostavi postopek uvajanja aplikacij Java. S pravilno konfiguracijo pom.xml in z uporabo vtičnikov, kot sta vtičnik Maven Assembly ali Maven Shade Plugin, lahko razvijalci zapakirajo vse potrebne odvisnosti v eno datoteko JAR. Ta pristop zagotavlja, da lahko aplikacija nemoteno deluje v različnih okoljih, zaradi česar sta distribucija in izvajanje enostavni. Sledenje tem korakom vam bo pomagalo učinkovito upravljati odvisnosti vašega projekta in ustvariti zanesljive, izvedljive datoteke JAR.