Uninteressantes von einem Anwendungsentwickler aus Linse
 

[Netbeans] "Fat" JAR-Archive - Abhängigkeiten mit packen

Kategorie "Programmieren" Programmieren  Verfasst von christian christian  Verfasst am 25.08.2011 12:41 25.08.2011 12:41  1 Galeriebild 1 Galeriebild  3 Kommentare 3 Kommentare  3011 Hits 3011x  

Netbeans bietet auf GUI Ebene keine Möglichkeit im Projekt verknüpfte JAR Libarys beim Build des Projektes mit in das JAR Archiv zu packen, sodass man alles was man für das Programm benötigt in einer Datei hat.

Standardmäßig wird im Projektunterordner dist/ immer ein Ordner lib/ angelegt, wo alle benötigten Libarys separat abgelegt werden.  

Um das zu ändern, muss man ein wenig Hand anlegen und die build.xml im Projektverzeichnis bearbeiten. Dazu verwendet man einfach das File-View, welches man unter Window » Files finden kann. Die build.xml kann dann einfach mit Netbeans geöffnet werden.

Nun muss am Ende der build.xml vor dem </project>-Tag folgendes eingefügt werden:

<target name="-unjar-and-copy-lib-jars">
   <unjar dest="${build.classes.dir}">
      <fileset dir="lib">
         <include name="**/*.jar"/>
      </fileset>
      <patternset>
         <exclude name="META-INF/**"/>
         <exclude name="/*"/>
      </patternset>
   </unjar>
</target>

<target depends="init,compile,-pre-pre-jar,-pre-jar,-unjar-and-copy-lib-jars" name="fat-jar">
   <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
   <jar destfile="${dist.jar}">
      <fileset dir="${build.classes.dir}"/>
      <manifest>
         <attribute name="Main-Class" value="${main.class}"/>
      </manifest>
   </jar>
   <echo>To run this application from the command line without Ant, try:</echo>
   <property location="${dist.jar}" name="dist.jar.resolved"/>
   <echo>java -jar "${dist.jar.resolved}"</echo>
</target>

<target depends="clean,fat-jar" name="clean-and-fat-jar"/>

Wie in Zeile 3 des Schnipsels festgelegt, müssen nun alle benötigten Libarys im Unterordner lib/ des Projektes abgelegt werden. Danach noch eventuell die Verknüpfung der Libs innerhalb des Projektes (via GUI, Libaries » Add JAR/Folder...) ändern.

Wenn man nun einen Rechtklick auf die build.xml macht, sollte man unter Run Target » Other Targets den Menüpunkt fat-jar finden. Genau das Run Target muss ausgeführt werden.

Run Target

Wenn man nun das JAR-Archiv, was sich in dist/ befindet, in einen anderen Ordner verschiebt, sollte es trotzdem noch lauffähig sein. :)

Ich find es sehr merkwürdig das Netbeans dieses Feature nicht auf GUI-Ebene mitbringt und finde, dass Oracle da dringend nacharbeiten muss!

via joshuaborn.info

 
 

Shortlink

 



3 Kommentare

Avatar
1) 0x schrieb am 25.08.2011 um 13:54 Uhr
Der glaube das Oracle irgendwas gutes macht ist in etwa so warscheinlich wie den Weihnachtsmann zu gesicht zu bekommen.
Avatar
2) Gast schrieb am 25.08.2011 um 20:12 Uhr
für PHP ist netbeans eigentlich ganz gut zu gebrauchen... Ich liebe den FTP on save support von netbeans einfach, eclipse hat bis heute keinen guten FTP sync
Avatar
3) christian schrieb am 25.08.2011 um 20:38 Uhr
Für Eclipse kann ich das Aptana Web Plugin empfehlen.
Das rüstet unter anderem upload on save nach.

http://www.aptana.com/


Kommentar verfassen

 
  
 (wird nicht angezeigt)
 (optional)
 
Information
Auf dem Bild befindet sich eine Mathe Aufgabe. Bitte gib das Ergebnis dieser Aufgabe in das Eingabefeld neben dem Bild ein.
Dies dient dazu, um SPAM Bots auszusperren, die keine Bilder lesen können.

Um das Captcha neu zu laden, klicke einfach auf das Reload Symbol.
Captcha neu laden Captcha 
Alle eingegebenen Daten werden an den Antispam Dienst Akismet gesendet um SPAM Kommentare zu erkennen. Bitte erstelle keine Kommentare wenn Du damit nicht einverstanden bist!
(Das machen übrigens 90% aller Wordpress-Blogs!)

Tag Cloud

28c3   3D   ASCII   Akismet   Allgemein   Animation   Apache   Arbeit   Arch Linux   Archos 5   Asterix & Obelix   Audio   Auto   BOINC   Bash   Bitlbee   Blog v2.0   Bluetooth   Bodenwerder   Bouncer (BNC)   Bundestagswahl 09   Bücher   CCC   Chromium   Comics   Computerspiele   Content Managment System   Creative Commons   CyanogenMod   Cybton   DAU Alarm   DLRG   Datenbanken   Datenschutz   Debian   Deutsches Rotes Kreuz   Domains   Drucken   EZFlash Vi   Eclipse   Eingabegeräte   Ekelhaft   Email   Essen   Ethernet   Evernote   ExtJS   Facebook   Fail2Ban   Fanartikel   Feiertage   Fernsehn   Firefox   Flash   Flattr   Fotografie   Fritz!Box   Fun   Fußball   GEZ   GPS   Gameboy Advance   Games   Git   Gnome   Google   Google Android   Google Android Hacking   Google+   Grafiken   Grand Theft Auto IV   HTC   HTC Desire Z   HTML   Handhelds   Handy   Handy Apps   Hardware   Hardware Hacking   Homebrew   ICQ   IRC   ImapFilter   Internet   Internet Explorer   Internet Relay Chat (IRC)   Internetzensur   Java   JavaScript   JeeGeek   Justiz   Kino   Konzert   Kultur   Kumpels   Legend of Zelda   Linux   Linux Mint   MS SQL Server   Marilyn Manson   Microsoft .NET   Minecraft   Mobile   Mozilla   Music Player Daemon (MPD)   Musik   MySQL   NPD   Natur   Netbeans   Netbooks   Netzwerk   Nintendo   Nintendo DS   Nintendo DSi   Nintendo Wii   Notebook   OpenOffice   OpenOffice Impress   OpenWRT   PC Hardware   PHP   Pandora   Papierkorb   Patentrecht   Pidgin   Piratenpartei   Piwik   Politik   Privat   Programmieren   Projekte   PulseAudio   QR-Code   RSS   Rammstein   Root   SD-Karte   SOGo Scalable OpenGroupware   SSH   SVN   Schlüsselband   Schule   Seagate Freeagent Dockstar   Server   Serversicherheit   Sesamstraße   Shellscripting   Shopping   Shortlinker   Skype   Social Networks   Software   Spam   Spenden   Spongebob   Straßenverkehr   Support   TV   Tablets   Technik   Textverarbeitung   Thunderbird   Truecrypt   Twitter   Typo3   UMTS   USA   USB   Ubuntu   Underground Shopping   Urheberrecht   Urlaub   VMWare   VNC   Vereine   Verkaufen   Verstärker   Videorecorder   Viren und andere Schädlinge   Virtual Box   Vorratsdatenspeicherung   WLAN   Wahlen   Webspace   Wehrdienst   Weserbergland   Willkommen   Windows   Windows 7   X11   XFCE   XML   XStylus   Zeitschriften   Zensur   bind9   ffmpeg   netcup   openSSL   r0ket   sim4000.de   vim   Überwachung   Überwachungsstaat   üäx.de   1337