Zabalení projektů Maven do jediného spustitelného souboru JAR
Při práci s projekty Java je často nutné zabalit vaši aplikaci do jediného spustitelného souboru JAR pro snadnou distribuci. Maven, výkonný nástroj pro automatizaci sestavování, umožňuje vývojářům zahrnout všechny potřebné závislosti do tohoto jediného výstupního JAR.
Tento článek vás provede kroky potřebnými ke konfiguraci vašeho projektu Maven tak, aby zahrnoval všechny závislé JAR do vašeho konečného spustitelného JAR. Dodržováním těchto pokynů zjednodušíte proces nasazení a zajistíte, že vaše aplikace bude fungovat hladce v různých prostředích.
Příkaz | Popis |
---|---|
<plugin> | Definuje plugin Maven, který se má použít během procesu sestavování. Pluginy mohou provádět specifické úkoly, jako je kompilace kódu nebo balení projektu. |
<groupId> | Určuje identifikátor skupiny pro projekt Maven, obvykle název reverzní domény. |
<artifactId> | Definuje identifikátor artefaktu, což je název projektu. |
<version> | Označuje aktuální verzi projektu. |
<build> | Obsahuje konfiguraci sestavení pro projekt, včetně pluginů a zdrojů. |
<descriptorRef> | Odkazuje na předdefinovaný deskriptor pro použití zásuvného modulu Maven Assembly, jako je „jar-with-dependencies“. |
<mainClass> | Určuje hlavní třídu, která se má spustit při spuštění souboru JAR. |
<execution> | Definuje spouštěcí blok v rámci modulu plug-in a určuje úlohy, které mají být provedeny v různých fázích sestavení. |
mvn clean package | Příkaz k vyčištění projektu a jeho zabalení do souboru JAR, včetně všech závislostí. |
java -jar target/...jar | Příkaz ke spuštění vygenerovaného souboru JAR s uvedením cesty k souboru JAR. |
Vytvoření a spuštění spustitelného souboru JAR pomocí Maven
Výše uvedené skripty ukazují, jak nakonfigurovat projekt Maven tak, aby zabalil všechny jeho závislosti do jednoho spustitelného souboru JAR. První skript je Maven pom.xml soubor, který obsahuje konfiguraci projektu. V tomto souboru je <plugin> tag se používá k definování modulu Maven Assembly Plugin. Tento plugin je zásadní pro vytvoření spustitelného JAR, který obsahuje všechny závislosti. The <descriptorRefs> tag v konfiguraci pluginu určuje použití jar-with-dependencies deskriptor, který zajišťuje, že všechny závislosti projektu jsou zabaleny do konečného souboru JAR. The <mainClass> tag uvnitř <manifest> sekce je zásadní, protože říká Mavenovi, která třída obsahuje hlavní metodu, která se má spustit, když je spuštěn JAR.
The <execution> blok v konfiguraci pluginu je místo, kde se akce děje. Určuje, že cíl pluginu single by měla být provedena během package fázi životního cyklu stavby. To je to, co spouští vytvoření souboru JAR se závislostmi. Druhý skript je jednoduchá instrukce příkazového řádku: mvn clean package. Tento příkaz vyčistí projekt (odstraní předchozí artefakty sestavení), zkompiluje zdrojový kód, spustí testy a zabalí projekt do souboru JAR. Konečný soubor JAR bude umístěn v target adresář projektu a pojmenován podle artifactId a version specifikované v pom.xml.
Vytvoření spustitelného souboru JAR se závislostmi pomocí Maven
Maven konfigurační skript
<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>
Spuštění příkazu Maven pro zabalení JAR
Pokyny pro příkazový řádek
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
Pokročilé techniky Maven pro závislosti na balení
Kromě základní konfigurace pro vytvoření spustitelného JAR pomocí Maven existují další techniky, které mohou zlepšit váš proces sestavování. Jedna taková technika zahrnuje použití shade plugin místo assembly zapojit. Maven Shade Plugin nabízí pokročilejší funkce pro vytváření uber-JAR (JAR se závislostmi v ceně). Umožňuje vám přejmenovat balíčky, abyste se vyhnuli konfliktům tříd tříd a poskytuje lepší zpracování duplicitních tříd a prostředků. Navíc nabízí jemnou kontrolu nad tím, které závislosti jsou zahrnuty do konečného JAR.
Dalším důležitým aspektem je správa velikosti vašeho souboru JAR. Velké soubory JAR mohou být těžkopádné a pomalé při přenosu nebo načítání. The maven-shade-plugin může s tím pomoci tím, že vám umožní vyloučit nepotřebné soubory a třídy, čímž se sníží velikost konečného JAR. Můžete také nakonfigurovat plugin tak, aby minimalizoval JAR odstraněním nepodstatných informací, jako jsou nepoužívané třídy nebo nadbytečné zdroje. Tyto pokročilé konfigurace mohou být užitečné zejména při práci na velkých projektech s mnoha závislostmi.
Běžné otázky a řešení pro Maven spustitelné soubory JAR
- Jak specifikuji hlavní třídu v mém JAR?
- Hlavní třídu můžete určit pomocí <mainClass> tag uvnitř <manifest> sekce konfigurace pluginu Maven.
- Jak mohu vyloučit konkrétní závislosti z konečného JAR?
- Použijte excludes tag v konfiguraci zásuvného modulu pro určení závislostí, které by neměly být zahrnuty do konečného JAR.
- Co je to uber-JAR?
- Uber-JAR je soubor JAR, který obsahuje nejen váš zkompilovaný kód, ale také všechny jeho závislosti.
- Jak se mohu vyhnout konfliktům tříd ve svém JAR?
- The maven-shade-plugin umožňuje přejmenovat balíčky v rámci závislostí, aby se předešlo konfliktům.
- Jak zacházím s duplicitními třídami v závislostech?
- Nakonfigurujte maven-shade-plugin ke správě duplicitních tříd a zdrojů určením, jak by se mělo s duplicitami zacházet v konečném JAR.
- Mohu zahrnout pouze konkrétní soubory ze závislosti?
- Ano, můžete nakonfigurovat maven-assembly-plugin nebo maven-shade-plugin zahrnout pouze určité soubory ze závislosti.
- Jak spustím zabalený JAR?
- Použijte java -jar příkaz následovaný cestou k vašemu souboru JAR.
- Jak mohu ověřit obsah mého souboru JAR?
- Můžete použít jar -tf příkaz k výpisu obsahu souboru JAR.
- Co když je můj soubor JAR příliš velký?
- Použijte maven-shade-plugin vyloučit nepotřebné soubory a minimalizovat velikost JAR.
Závěrečné myšlenky o Maven spustitelných souborech JAR
Vytvoření spustitelného JAR se závislostmi pomocí Maven zjednodušuje proces nasazení pro Java aplikace. Správnou konfigurací pom.xml a pomocí zásuvných modulů, jako je Maven Assembly Plugin nebo Maven Shade Plugin, mohou vývojáři zabalit všechny potřebné závislosti do jediného souboru JAR. Tento přístup zajišťuje, že aplikace může bezproblémově běžet v různých prostředích, takže distribuce a spouštění jsou jednoduché. Následující kroky vám pomohou efektivně spravovat závislosti vašeho projektu a vytvářet spolehlivé, spustitelné soubory JAR.