Nun, ich hab das Plugin in meinem Eclipse gefunden und benutzt. Funktioniert prima. Gibt sogar nen Export, damit man das über einen Ant-Task aufrufen kann. Sieht dann ungefähr so aus:
<?xml version="1.0"?> <project name="FatJar MySuperDuperClass.jar (experimental)" default="main" basedir="."> <!-- this file was created by Fat-Jar Eclipse Plug-in --> <!-- the ANT-Export is in a very early stage, so this --> <!-- is only experimental, ANT 1.6 or above is --> <!-- required, feedback is always welcome: --> <!-- http://sourceforge.net/projects/fjep --> <!-- uncomment the following lines if using ANT outside Eclipse --> <!-- <property name="fjepPath" value="plugins/net.sf.fjep.fatjar_0.0.31/fatjar.jar"/> <taskdef name="fatjar.build" classname="net.sf.fjep.anttask.FJBuildTask" classpath="${fjepPath}"/> <typedef name="fatjar.manifest" classname="net.sf.fjep.anttask.FJManifestType" classpath="${fjepPath}"/> <typedef name="fatjar.exclude" classname="net.sf.fjep.anttask.FJExcludeType" classpath="${fjepPath}"/> <typedef name="fatjar.jarsource" classname="net.sf.fjep.anttask.FJJarSourceType" classpath="${fjepPath}"/> <typedef name="fatjar.filesource" classname="net.sf.fjep.anttask.FJFileSourceType" classpath="${fjepPath}"/> --> <!-- uncomment the above lines to use ANT outside of Eclipse --> <target name="main"> <fatjar.build output="MySuperDuperClass.jar"> <fatjar.manifest mainclass="de.schwobeseggl.test.MySuperDuperClass"/> <fatjar.filesource path="bin" relpath=""/> <fatjar.jarsource file="lib/commons-cli.jar" relpath=""/> <fatjar.jarsource file="lib/jbossall-client.jar" relpath=""/> <fatjar.jarsource file="lib/junit.jar" relpath=""/> <fatjar.jarsource file="lib/log4j.jar" relpath=""/> <fatjar.jarsource file="lib/jdom.jar" relpath=""/> </fatjar.build> </target> </project>
Schön und gut, das geht aber nur innerhalb von Eclipse. Auch wenn man obigen Hinweis folgt und die Zeilen einkommentiert, klappt es nicht, es kommt die Fehlermeldung:
BUILD FAILED /my/path/MySuperDuperClass/build.xml:42: fatjar.build doesn't support the nested "fatjar.filesource" element.
Doof. Die Lösung ist relativ einfach, aber erst nach langer Suche hab ich sie gefunden: Einfach ein loaderref=“${fjepPath}“ in jedes typedef rein. Somit wird aus:
<typedef name="fatjar.manifest" classname="net.sf.fjep.anttask.FJManifestType" classpath="${fjepPath}"/>
ein
<typedef name="fatjar.manifest" classname="net.sf.fjep.anttask.FJManifestType" classpath="${fjepPath}" loaderref="${fjepPath}" />