Wenn mit Maven eine JAR-Datei erzeugt wird werden die abhängigen Libraries im Normalfall nicht mit in das JAR aufgenommen. Soll jedoch ein lauffähiges Programm ausgeliefert werden, so müssen alle Dependencies zu einem JAR zusammengefasst werden. Diese Aufgabe übernimmt das Maven Assembly Plugin. In der POM-Datei des Hauptprojektes wird es als Plugin aufgenommen und ihm mitgeteilt wo sich die Klasse mit der Main-Methode befindet. Über das Attribut „finalName“ kann der Name der zu erzeugenden JAR-Datei festgelegt werden. Abschließend wird Assembly Plugin über die Execution-Einstellungen an die Package-Phase des Maven Lebenszyklus gebunden. Ein JAR mit allen abhängigen Klassen kann dann über den Package-Befehl erstellt werden:
mvn clean package
POM Inhalt:
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <finalName>JAR_NAME</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>net.it_adviser.test.MainClass</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>attached</goal> </goals> </execution> </executions> </plugin> </plugins> </build>