Mehrere externe JARs in eine JAR einbinden

Das Einbinden von externen JAR-Bibliotheken in der eigenen JAR ist mit einem Apache Ant Build-Task recht einfach. Für mein Beispiel verweise ich auf dieses [post id=2583]Ant Build Skript[/post]. Mit nur einer weiteren Zeile (Zeile Nummer 6) kann man die build.xml so erweitern, dass alle externen Bibliotheken aus dem /lib-Verzeichnis in die eigene JAR gepackt werden:

1
2
3
4
5
6
7
<jar destfile="${jar.dir}/${ant.project.name}-${app.version}.jar" basedir="${classes.dir}">
	<manifest>
		<attribute name="Main-Class" value="${main.class}" />
		<attribute name="Class-Path" value="${manifest.class.path}" />
	</manifest>
	<zipgroupfileset dir="${lib.dir}/."/>
</jar>

Das zipgroupfileset unterstützt alle Attribute des <fileset>, wodurch über folgenden Befehl einzelne Dateien ausgeschlossen werden können:

1
<zipgroupfileset dir="${lib.dir}/." excludes="junit-4.8.2.jar" />

Für weitere Infos verweise ich auf den Beitrag „NetBeans – deploying all in one jar“ von stackoverflow.