Netbeans hat – zum Glück – neuerdings Maven Support. Das macht insbesondere die Anpassung des Build Prozesses wesentlich einfacher. Dazu kommt, dass Maven Kenntnisse nicht nur bei Netbeans Usern verbreitet sind, und so bessere Interoperabilität erzielt wird.
Hat man jedoch kein Maven Projekt, sondern das „klassische“ ant basierte Chaos Buildsystem, können Anpassungen schonmal komplizierter werden.

In diesem Fall ging es darum, dass mit Netbeans /ant produzierte Artefakte als einzelne JAR Datei verteilbar sein sollten. D.h. alle Bibliotheken bzw. Library JAR Files sollten in einem einzelnen, ausführbaren JAR landen.Die Lösung dafür erfordert (minimalen) manuellen Aufwand, doch funktioniert es dafür tadellos. Die Netbeans Entwickler haben mehrere Phasen im Ant Build vorgesehen, an dem man sich einklinken kann, und Erweiterungen vornehmen kann. Davon mache ich Gebrauch, und ergänze einen „Hook“ in der Phase „post-jar“.

In dieser Phase ist eigentlich das ausführbare JAR gebaut, und auch die nötigen Bibliotheken im „lib“ Ordner als JAR Dateien verfügbar. Nun gilt es diese – einzeln – aufzuzählen, zusammen mit dem eigentlichen JAR Inhalt zusammenzupacken und anschließend noch die „Main-Class“ anzugeben, damit das JAR weiterhin ausführbar ist.

Das könnte dann so aussehen (build.xml, am Ende der Datei)

<target name="-post-jar">
<jar jarfile="${dist.dir}/dist.jar">
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="${dist.dir}/lib/notify.jar" excludes="META-INF/*" />
<manifest>
<attribute name="Main-Class" value="jotify.JNotify"/>
</manifest>
</jar>
</target>

In diesem Fall gibt es nur die „notify.jar“ als externe Abhängigkeit zu ergänzen, die Main-Class wird wie gewohnt incl. Package angegeben. Über „jar jarfile=“ kann man den endgültigen Namen des zusammengepackten JAR festelegen.