Maven-projektien pakkaaminen yhteen suoritettavaan JAR:iin
Java-projektien kanssa työskenneltäessä on usein tarpeen pakata sovellus yhdeksi suoritettavaksi JAR-tiedostoksi levittämisen helpottamiseksi. Maven, tehokas rakennusautomaatiotyökalu, antaa kehittäjille mahdollisuuden sisällyttää kaikki tarvittavat riippuvuudet tähän yhteen lähtö-JAR:iin.
Tämä artikkeli opastaa sinua vaiheissa, joita tarvitaan Maven-projektin määrittämiseen sisällyttämään kaikki riippuvuus-JAR-tiedostot lopulliseen suoritettavaan JAR-tiedostoosi. Näitä ohjeita noudattamalla yksinkertaistat käyttöönottoprosessia ja varmistat, että sovelluksesi toimii sujuvasti eri ympäristöissä.
Komento | Kuvaus |
---|---|
<plugin> | Määrittää Maven-laajennuksen, jota käytetään rakennusprosessin aikana. Pluginit voivat suorittaa tiettyjä tehtäviä, kuten koodin kääntämistä tai projektin pakkaamista. |
<groupId> | Määrittää Maven-projektin ryhmätunnisteen, yleensä käänteisen toimialueen nimen. |
<artifactId> | Määrittää artefaktin tunnisteen, joka on projektin nimi. |
<version> | Osoittaa projektin nykyisen version. |
<build> | Sisältää projektin koontikokoonpanon, mukaan lukien laajennukset ja resurssit. |
<descriptorRef> | Viittaa ennalta määritettyyn kuvaajaan Maven Assembly Pluginille käytettäväksi, kuten "jar-with-dependencies". |
<mainClass> | Määrittää pääluokan, joka suoritetaan, kun JAR-tiedosto suoritetaan. |
<execution> | Määrittää suorituslohkon laajennuksen sisällä ja määrittää eri rakennusvaiheissa suoritettavat tehtävät. |
mvn clean package | Komento puhdistaa projekti ja pakata se JAR-tiedostoon, mukaan lukien kaikki riippuvuudet. |
java -jar target/...jar | Komento suorittaa luotu JAR-tiedosto ja määrittää polun JAR-tiedostoon. |
Suoritettavan JAR:n luominen ja suorittaminen Mavenin kanssa
Yllä toimitetut komentosarjat osoittavat, kuinka Maven-projekti määritetään pakamaan kaikki sen riippuvuudet yhdeksi suoritettavaksi JAR-tiedostoksi. Ensimmäinen käsikirjoitus on Maven pom.xml tiedosto, joka sisältää projektin asetukset. Tässä tiedostossa on <plugin> -tunnistetta käytetään määrittelemään Maven Assembly Plugin. Tämä laajennus on ratkaisevan tärkeä suoritettavan JAR:n luomisessa, joka sisältää kaikki riippuvuudet. The <descriptorRefs> -tunniste laajennuksen kokoonpanossa määrittää jar-with-dependencies kuvaaja, joka varmistaa, että kaikki projektin riippuvuudet pakataan lopulliseen JAR-tiedostoon. The <mainClass> tagin sisällä <manifest> -osio on olennainen, koska se kertoo Mavenille, mikä luokka sisältää päämenetelmän, joka suoritetaan, kun JAR suoritetaan.
The <execution> lohko laajennuksen kokoonpanossa on paikka, jossa toiminto tapahtuu. Se määrittää, että laajennuksen tavoite single tulee suorittaa aikana package rakennuksen elinkaaren vaihe. Tämä käynnistää riippuvuuksia sisältävän JAR-tiedoston luomisen. Toinen komentosarja on yksinkertainen komentoriviohje: mvn clean package. Tämä komento puhdistaa projektin (poistaa aiemmat koontiartefaktit), kokoaa lähdekoodin, suorittaa testejä ja pakkaa projektin JAR-tiedostoon. Lopullinen JAR-tiedosto sijaitsee osoitteessa target projektin hakemistosta ja nimetty artifactId ja version määritelty kohdassa pom.xml.
Suoritettavan JAR-tiedoston luominen riippuvuuksilla Mavenin avulla
Maven Configuration Script
<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-komennon suorittaminen JAR:n pakkaamiseksi
Komentoriviohjeet
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
Kehittyneet Maven-tekniikat pakkausriippuvuuksiin
Peruskokoonpanon lisäksi suoritettavan JAR:n luomiseksi Mavenilla on muita tekniikoita, jotka voivat parantaa rakennusprosessia. Yksi tällainen tekniikka sisältää shade plugin sijasta assembly kytkeä. Maven Shade Plugin tarjoaa edistyneempiä ominaisuuksia uber-JAR:ien luomiseen (JAR:t riippuvuuksineen). Sen avulla voit nimetä paketteja uudelleen luokkapolun ristiriitojen välttämiseksi ja parantaa päällekkäisten luokkien ja resurssien käsittelyä. Lisäksi se tarjoaa hienorakeisen hallinnan siihen, mitkä riippuvuudet sisällytetään lopulliseen JAR:iin.
Toinen tärkeä näkökohta on JAR-tiedoston koon hallinta. Suuret JAR-tiedostot voivat olla hankalia ja hidasta siirtää tai ladata. The maven-shade-plugin voi auttaa tässä antamalla sinun sulkea pois tarpeettomat tiedostot ja luokat, mikä pienentää lopullisen JAR:n kokoa. Voit myös määrittää laajennuksen minimoimaan JAR:n poistamalla ei-välttämättömät tiedot, kuten käyttämättömät luokat tai ylimääräiset resurssit. Nämä edistyneet kokoonpanot voivat olla erityisen hyödyllisiä, kun työskentelet suurissa projekteissa, joissa on useita riippuvuuksia.
Yleisiä kysymyksiä ja ratkaisuja Maven Executable JAR:ille
- Kuinka määritän pääluokan JAR:issani?
- Voit määrittää pääluokan käyttämällä <mainClass> -tunnisteen sisällä <manifest> Maven-laajennuksen kokoonpanon osa.
- Kuinka voin sulkea pois tietyt riippuvuudet lopullisesta JAR:sta?
- Käytä excludes -tunniste laajennuksen määrityksissä määrittääksesi riippuvuudet, joita ei pitäisi sisällyttää lopulliseen JAR:iin.
- Mikä on uber-JAR?
- Uber-JAR on JAR-tiedosto, joka sisältää käännetyn koodisi lisäksi myös kaikki sen riippuvuudet.
- Kuinka voin välttää luokkapolun ristiriidat JARissani?
- The maven-shade-plugin voit nimetä uudelleen riippuvuuksien sisällä olevia paketteja ristiriitojen välttämiseksi.
- Kuinka käsittelen päällekkäisiä luokkia riippuvuuksissa?
- Määritä maven-shade-plugin hallita päällekkäisiä luokkia ja resursseja määrittämällä, kuinka kaksoiskappaleita tulee käsitellä lopullisessa JAR:ssa.
- Voinko sisällyttää vain tiettyjä tiedostoja riippuvuudesta?
- Kyllä, voit määrittää maven-assembly-plugin tai maven-shade-plugin sisällyttääksesi vain tietyt tiedostot riippuvuudesta.
- Kuinka käytän pakattua JAR:ia?
- Käytä java -jar komento ja sen jälkeen polku JAR-tiedostoosi.
- Kuinka voin tarkistaa JAR-tiedostoni sisällön?
- Voit käyttää jar -tf -komento listataksesi JAR-tiedoston sisällön.
- Entä jos JAR-tiedostoni on liian suuri?
- Käytä maven-shade-plugin poistaaksesi tarpeettomat tiedostot ja minimoidaksesi JAR-koon.
Loppuajatuksia Maven Executable JAR:eista
Suoritettavan JAR:n luominen riippuvuuksilla Mavenin avulla yksinkertaistaa Java-sovellusten käyttöönottoprosessia. Määrittämällä oikein pom.xml tiedostoa ja käyttämällä laajennuksia, kuten Maven Assembly Plugin tai Maven Shade Plugin, kehittäjät voivat pakata kaikki tarvittavat riippuvuudet yhdeksi JAR-tiedostoksi. Tämä lähestymistapa varmistaa, että sovellus voi toimia saumattomasti eri ympäristöissä, mikä tekee jakelusta ja suorittamisesta yksinkertaista. Näiden vaiheiden noudattaminen auttaa sinua hallitsemaan projektisi riippuvuuksia tehokkaasti ja luomaan luotettavia, suoritettavia JAR-tiedostoja.