Oprettelse af en eksekverbar JAR med afhængigheder ved hjælp af Maven

Oprettelse af en eksekverbar JAR med afhængigheder ved hjælp af Maven
Oprettelse af en eksekverbar JAR med afhængigheder ved hjælp af Maven

Pak Maven-projekter ind i en enkelt eksekverbar JAR

Når du arbejder med Java-projekter, er det ofte nødvendigt at pakke dit program ind i en enkelt eksekverbar JAR-fil for nem distribution. Maven, et kraftfuldt byggeautomatiseringsværktøj, giver udviklere mulighed for at inkludere alle nødvendige afhængigheder i denne enkelt output JAR.

Denne artikel vil guide dig gennem de nødvendige trin for at konfigurere dit Maven-projekt til at inkludere alle afhængigheds-JAR'er i din endelige eksekverbare JAR. Ved at følge disse instruktioner forenkler du implementeringsprocessen og sikrer, at din applikation kører problemfrit på tværs af forskellige miljøer.

Kommando Beskrivelse
<plugin> Definerer et Maven-plugin, der skal bruges under byggeprocessen. Plugins kan udføre specifikke opgaver såsom kompilering af kode eller pakning af projektet.
<groupId> Angiver gruppe-id'et for Maven-projektet, normalt et omvendt domænenavn.
<artifactId> Definerer artefaktens identifikator, som er projektets navn.
<version> Angiver projektets aktuelle version.
<build> Indeholder byggekonfigurationen for projektet, inklusive plugins og ressourcer.
<descriptorRef> Refererer til en foruddefineret deskriptor, som Maven Assembly Plugin skal bruge, såsom "jar-med-afhængigheder".
<mainClass> Angiver hovedklassen, der skal udføres, når JAR-filen køres.
<execution> Definerer en udførelsesblok i et plugin, der specificerer opgaver, der skal udføres i forskellige byggefaser.
mvn clean package Kommando til at rense projektet og pakke det ind i en JAR-fil, inklusive alle afhængigheder.
java -jar target/...jar Kommando til at køre den genererede JAR-fil, som angiver stien til JAR.

Oprettelse og drift af en eksekverbar JAR med Maven

Scriptsene ovenfor viser, hvordan man konfigurerer et Maven-projekt til at pakke alle dets afhængigheder i en enkelt eksekverbar JAR-fil. Det første manuskript er en Maven pom.xml fil, som indeholder projektets konfiguration. I denne fil er <plugin> tag bruges til at definere Maven Assembly Plugin. Dette plugin er afgørende for at skabe en eksekverbar JAR, der inkluderer alle afhængigheder. Det <descriptorRefs> tag i plugin-konfigurationen angiver brugen af jar-with-dependencies descriptor, som sikrer, at alle projektets afhængigheder er pakket ind i den endelige JAR-fil. Det <mainClass> tag inde i <manifest> sektionen er vigtig, da den fortæller Maven, hvilken klasse der indeholder hovedmetoden, der skal køres, når JAR'en udføres.

Det <execution> blok inde i plugin-konfigurationen er, hvor handlingen sker. Det specificerer, at plugin's mål single skal udføres i løbet af package fase af byggelivscyklussen. Det er det, der udløser oprettelsen af ​​JAR-filen med afhængigheder. Det andet script er en simpel kommandolinjeinstruktion: mvn clean package. Denne kommando renser projektet (fjerner tidligere byggeartefakter), kompilerer kildekoden, kører tests og pakker projektet ind i en JAR-fil. Den endelige JAR-fil vil være placeret i target bibliotek over projektet og navngivet i henhold til artifactId og version specificeret i pom.xml.

Oprettelse af en eksekverbar JAR-fil med afhængigheder ved hjælp af Maven

Maven-konfigurationsscript

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

Kørsel af Maven-kommandoen for at pakke JAR

Kommandolinje instruktioner

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

Avancerede Maven-teknikker til emballageafhængigheder

Ud over den grundlæggende konfiguration til at skabe en eksekverbar JAR med Maven, er der yderligere teknikker, der kan forbedre din byggeproces. En sådan teknik involverer at bruge shade plugin i stedet for assembly plugin. Maven Shade Plugin tilbyder mere avancerede funktioner til at skabe uber-JAR'er (JAR'er med afhængigheder inkluderet). Det giver dig mulighed for at omdøbe pakker for at undgå klassestikonflikter og giver bedre håndtering af duplikerede klasser og ressourcer. Derudover giver det finkornet kontrol over, hvilke afhængigheder der er inkluderet i den endelige JAR.

Et andet vigtigt aspekt er at administrere størrelsen på din JAR-fil. Store JAR-filer kan være besværlige og langsomme at overføre eller indlæse. Det maven-shade-plugin kan hjælpe med dette ved at tillade dig at udelukke unødvendige filer og klasser og dermed reducere størrelsen af ​​den endelige JAR. Du kan også konfigurere plugin'et til at minimere JAR ved at fjerne ikke-essentielle oplysninger såsom ubrugte klasser eller overflødige ressourcer. Disse avancerede konfigurationer kan være særligt nyttige, når du arbejder på store projekter med mange afhængigheder.

Almindelige spørgsmål og løsninger til Maven eksekverbare JAR'er

  1. Hvordan angiver jeg hovedklassen i min JAR?
  2. Du kan angive hovedklassen ved hjælp af <mainClass> tag inden for <manifest> sektion af Maven-plugin-konfigurationen.
  3. Hvordan kan jeg udelukke specifikke afhængigheder fra den endelige JAR?
  4. Brug excludes tag i plugin-konfigurationen for at specificere afhængigheder, der ikke skal inkluderes i den endelige JAR.
  5. Hvad er en uber-JAR?
  6. En uber-JAR er en JAR-fil, der ikke kun indeholder din kompilerede kode, men også alle dens afhængigheder.
  7. Hvordan kan jeg undgå klassesti-konflikter i min JAR?
  8. Det maven-shade-plugin giver dig mulighed for at omdøbe pakker inden for afhængigheder for at undgå konflikter.
  9. Hvordan håndterer jeg duplikerede klasser i afhængigheder?
  10. Konfigurer maven-shade-plugin at administrere duplikatklasser og ressourcer ved at specificere, hvordan dubletter skal håndteres i den endelige JAR.
  11. Kan jeg kun inkludere specifikke filer fra en afhængighed?
  12. Ja, du kan konfigurere maven-assembly-plugin eller maven-shade-plugin kun at inkludere specifikke filer fra en afhængighed.
  13. Hvordan kører jeg den pakkede JAR?
  14. Brug java -jar kommando efterfulgt af stien til din JAR-fil.
  15. Hvordan kan jeg verificere indholdet af min JAR-fil?
  16. Du kan bruge jar -tf kommando for at vise indholdet af JAR-filen.
  17. Hvad hvis min JAR-fil er for stor?
  18. Brug maven-shade-plugin for at udelukke unødvendige filer og minimere JAR-størrelsen.

Afsluttende tanker om Maven eksekverbare JAR'er

Oprettelse af en eksekverbar JAR med afhængigheder ved hjælp af Maven forenkler implementeringsprocessen for Java-applikationer. Ved at konfigurere korrekt pom.xml fil og ved at bruge plugins som Maven Assembly Plugin eller Maven Shade Plugin, kan udviklere pakke alle nødvendige afhængigheder ind i en enkelt JAR-fil. Denne tilgang sikrer, at applikationen kan køre problemfrit i forskellige miljøer, hvilket gør distribution og eksekvering ligetil. At følge disse trin hjælper dig med at administrere dit projekts afhængigheder effektivt og skabe pålidelige, eksekverbare JAR-filer.