Ant + ECJ

Wenn man in Bezug auf ant mal nicht javac als Compiler nehmen will sondern ECJ, dann braucht man nicht viel zu tun. Als erste schnappt man sich das „org.eclipse.jdt.core_3.4.2.v_883_R34x.jar“ aus einer Eclipseversion. Hier zum Beispiel aus Eclipse 3.4.1.. Das kopiert man dann in das „lib“-Verzeichnis von ant. Bei mir liegt dies unter „/usr/share/ant/lib“. Wenn man da keine Schreibrechte hat, kann man das JAR auch nach „~/.ant/lib“ kopieren. Dort findet es ant dann auch. So die Theorie, leider klappe das nicht ganz so einfach auf meinen Fedora 9 System. Ich musste noch aus dem oben genannten JAR das darin enthaltende „jdtCompilerAdapter.jar“ entpacken und auch in das lib-Verzeichnis von ant. Danach ging alles. Und dieses alles ist folgendes: in seiner „build.xml“ muss man jetzt nur noch ein spezielles „property“ setzen.

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />

Und damit wären wir auch schon fertig! Jetzt wird beim kompilieren mit dem „javac task“ immer ECJ genommen anstatt der Compiler des System-JDK.

Und wenn man mal „fehlerhafte“ Klassen kompilieren will, kann man jetzt das „javac Flag“ „failonerror“ auf „off“ setzten. Anders als der Standard Java Compiler, welcher den build-Prozess dann zwar als erfolgreich markiert, aber nichts macht, kompiliert ECJ auch fehlerhafte Klassen. Also zum Beispiel Klassen wo wiederum andere Klassen importiert werden, welche aber nicht im „Classpath“ stehen. Denn ECJ bietet das Feature „proceedOnError“, welche durch „failonerror=off“ gesetzt wird.

<javac failonerror="off"> blubb </javac>