Fatjar-Plugin für Eclipse

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}" />

JUnit und Eclipse

Ich nehm immer gerne die neuste Version einer Software. Vor allem wenn ich diese zum ersten Mal richtig benutze 🙂

So geschehen mit Eclipse und JUnit. Eclipse nutz ich in Version 3.4.2 und JUnit in 4.3.1. So weit so gut. Eclipse hat jetzt eine wunderbare Integration von JUnit. Man kann, in der Theorie, sowohl alle Tests einer Suite ausführen, oder auch nur einen. Ausser man macht das so wie ich:

public class TestClient {
  public static junit.framework.Test suite() {
    return new JUnit4TestAdapter(RMITestClient.class);
}

  public static void main(String[] args) {
    junit.textui.TestRunner.run(suite());
  }

  @Test
  public void someTest {
    Value value = getSomeAction();
    assertTrue("should be true", value);
  }

  @Test
  public void someOtherTest {
    Value value = getSomeAction();
    assertTrue("should be true", value);
  }
}

So, wie man sieht, habe ich zwei Tests (mit der @Test-Annotation) und zwei Funktionen die die Abwärtskompatibiliät für JUnit <4.0 geben soll. Irgendwo ausm Internet[tm]. Nunja, mit diesen beiden Abwärtskompatibilitätsfunktionen kann die Eclipse-UI nicht mehr nur einzelne Tests ausführen, sondern führt den einen Test den man markiert aus, und dann den Rest trotzdem. Suboptimal. Deswegen einfach die Funktionen sich schenken, die Abwärtskompatibilität ebenso und dann klappt's auch mit den Nachbarn.

Eclipse, Subversion und Spket

Die drei Sachen verwende ich gerade. Da aber irgendwie gerade was abschmiert, steige ich mal auf „unstable“ (aka 3.5M3)um:

http://download.eclipse.org/eclipse/downloads/

Eclipse Update URLs: