Vykdomo JAR su priklausomybėmis sukūrimas naudojant Maven

Vykdomo JAR su priklausomybėmis sukūrimas naudojant Maven
Vykdomo JAR su priklausomybėmis sukūrimas naudojant Maven

„Maven“ projektų supakavimas į vieną vykdomąjį JAR

Dirbant su „Java“ projektais dažnai reikia supakuoti programą į vieną vykdomąjį JAR failą, kad būtų lengva platinti. Maven, galingas kūrimo automatizavimo įrankis, leidžia kūrėjams įtraukti visas būtinas priklausomybes į šį vieną išvesties JAR.

Šis straipsnis padės atlikti veiksmus, kurių reikia norint sukonfigūruoti „Maven“ projektą, kad visi priklausomybės JAR būtų įtraukti į galutinį vykdomąjį JAR. Vykdydami šias instrukcijas supaprastinsite diegimo procesą ir užtikrinsite, kad jūsų programa sklandžiai veiktų įvairiose aplinkose.

komandą apibūdinimas
<plugin> Apibrėžia Maven įskiepį, kuris bus naudojamas kūrimo proceso metu. Papildiniai gali atlikti konkrečias užduotis, tokias kaip kodo kompiliavimas arba projekto supakavimas.
<groupId> Nurodo grupės Maven projekto identifikatorių, paprastai atvirkštinį domeno pavadinimą.
<artifactId> Apibrėžia artefakto identifikatorių, kuris yra projekto pavadinimas.
<version> Nurodo dabartinę projekto versiją.
<build> Yra projekto kūrimo konfigūracija, įskaitant papildinius ir išteklius.
<descriptorRef> Nurodomas iš anksto apibrėžtas Maven Assembly įskiepio aprašas, kurį reikia naudoti, pvz., „stiklainis su priklausomybėmis“.
<mainClass> Nurodo pagrindinę klasę, kuri turi būti vykdoma paleidžiant JAR failą.
<execution> Apibrėžiamas vykdymo blokas papildinyje, nurodant užduotis, kurios turi būti atliekamos skirtingais kūrimo etapais.
mvn clean package Komanda išvalyti projektą ir supakuoti jį į JAR failą, įskaitant visas priklausomybes.
java -jar target/...jar Komanda paleisti sugeneruotą JAR failą, nurodydama kelią į JAR.

Vykdomo JAR sukūrimas ir paleidimas su Maven

Aukščiau pateikti scenarijai parodo, kaip sukonfigūruoti Maven projektą, kad visos jo priklausomybės būtų supakuotos į vieną vykdomąjį JAR failą. Pirmasis scenarijus yra Maven pom.xml failą, kuriame yra projekto konfigūracija. Šiame faile yra <plugin> žyma naudojama apibrėžti Maven Assembly Plugin. Šis papildinys yra labai svarbus kuriant vykdomąjį JAR, apimantį visas priklausomybes. The <descriptorRefs> Papildinio konfigūracijos žyma nurodo, kaip naudoti jar-with-dependencies deskriptorius, kuris užtikrina, kad visos projekto priklausomybės būtų supakuotos į galutinį JAR failą. The <mainClass> žyma viduje <manifest> skyrius yra būtinas, nes jis nurodo Maven, kurioje klasėje yra pagrindinis metodas, kurį reikia paleisti, kai vykdomas JAR.

The <execution> Papildinio konfigūracijos blokas yra vieta, kur vyksta veiksmas. Nurodoma, kad papildinio tikslas single turėtų būti įvykdytas per package statybos gyvavimo ciklo fazė. Tai suaktyvina JAR failo su priklausomybėmis kūrimą. Antrasis scenarijus yra paprasta komandinės eilutės instrukcija: mvn clean package. Ši komanda išvalo projektą (pašalina ankstesnius kūrimo artefaktus), sukompiliuoja šaltinio kodą, atlieka testus ir supakuoja projektą į JAR failą. Galutinis JAR failas bus target projekto katalogas ir pavadintas pagal artifactId ir version nurodyta pom.xml.

Vykdomo JAR failo su priklausomybėmis sukūrimas naudojant Maven

„Maven“ konfigūracijos scenarijus

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

Paleiskite „Maven“ komandą, kad supakuotumėte JAR

Komandinės eilutės instrukcijos

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

Pažangūs „Maven“ pakuočių priklausomybės metodai

Be pagrindinės konfigūracijos kuriant vykdomąjį JAR su Maven, yra papildomų metodų, kurie gali pagerinti jūsų kūrimo procesą. Viena iš tokių technikų apima naudojimą shade įskiepis vietoj assembly Prijunkite. „Maven Shade“ papildinys siūlo pažangesnes „uber-JAR“ (JAR su priklausomybėmis) kūrimo funkcijas. Tai leidžia pervardyti paketus, kad išvengtumėte klasių kelio konfliktų, ir geriau tvarkyti pasikartojančias klases ir išteklius. Be to, jame galima tiksliai valdyti, kurios priklausomybės yra įtrauktos į galutinį JAR.

Kitas svarbus aspektas yra JAR failo dydžio valdymas. Dideli JAR failai gali būti sudėtingi ir lėtai perkelti arba įkelti. The maven-shade-plugin gali padėti, leisdamas išskirti nereikalingus failus ir klases, taip sumažinant galutinio JAR dydį. Taip pat galite sukonfigūruoti papildinį, kad sumažintumėte JAR, pašalindami neesminę informaciją, pvz., nenaudojamas klases ar perteklinius išteklius. Šios išplėstinės konfigūracijos gali būti ypač naudingos dirbant su dideliais projektais su daugybe priklausomybių.

Įprasti Maven Executable JAR klausimai ir sprendimai

  1. Kaip nurodyti pagrindinę klasę savo JAR?
  2. Galite nurodyti pagrindinę klasę naudodami <mainClass> žyma viduje <manifest> Maven papildinio konfigūracijos skyrių.
  3. Kaip galiu išskirti konkrečias priklausomybes iš galutinio JAR?
  4. Naudoti excludes žymą papildinio konfigūracijoje, kad nurodytumėte priklausomybes, kurios neturėtų būti įtrauktos į galutinį JAR.
  5. Kas yra uber-JAR?
  6. Uber-JAR yra JAR failas, kuriame yra ne tik jūsų sukompiliuotas kodas, bet ir visos jo priklausomybės.
  7. Kaip galiu išvengti klasės kelio konfliktų savo JAR?
  8. The maven-shade-plugin leidžia pervardyti paketus priklausomybėse, kad būtų išvengta konfliktų.
  9. Kaip tvarkyti pasikartojančias priklausomybių klases?
  10. Konfigūruoti maven-shade-plugin valdyti pasikartojančias klases ir išteklius, nurodant, kaip dublikatai turi būti tvarkomi galutiniame JAR.
  11. Ar galiu įtraukti tik konkrečius failus iš priklausomybės?
  12. Taip, galite konfigūruoti maven-assembly-plugin arba maven-shade-plugin įtraukti tik konkrečius failus iš priklausomybės.
  13. Kaip paleisti supakuotą JAR?
  14. Naudoti java -jar komandą, po kurios nurodomas kelias į JAR failą.
  15. Kaip galiu patikrinti savo JAR failo turinį?
  16. Galite naudoti jar -tf komanda JAR failo turiniui išvardyti.
  17. Ką daryti, jei mano JAR failas yra per didelis?
  18. Naudoti maven-shade-plugin pašalinti nereikalingus failus ir sumažinti JAR dydį.

Baigiamosios mintys apie Maven Executable JAR

Sukūrus vykdomąjį JAR su priklausomybėmis naudojant Maven, supaprastinamas Java programų diegimo procesas. Tinkamai sukonfigūravus pom.xml failą ir naudodami papildinius, tokius kaip Maven Assembly Plugin arba Maven Shade Plugin, kūrėjai gali supakuoti visas reikalingas priklausomybes į vieną JAR failą. Šis metodas užtikrina, kad programa galėtų sklandžiai veikti įvairiose aplinkose, todėl platinimas ir vykdymas yra nesudėtingas. Atlikę šiuos veiksmus padėsite efektyviai valdyti projekto priklausomybes ir sukurti patikimus, vykdomus JAR failus.