Angabe des Eclipse-Compilers vollständig aus _within_ build.xml

Als Experiment möchten wir unsere Produkte mit dem Eclipse-Java-Compiler (ecj-3.5.jar, heruntergeladen von eclipse.org) auf der Laufzeitversion von Java 6 anstelle des JDK erstellen Diese JAR-Datei verweist auf den Klassenpfad ant und legt fest, dass die Eigenschaft build.compiler auf den Adapter verweist.

Durch Einbeziehung

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

In meiner build.xml und beim Aufrufen von ant mit einer JRE wird der erwartete Fehler angezeigt, dass der Adapter nicht gefunden werden kann. Durch Hinzufügen von ecj-3.5.jar zum Klassenpfad im Eclipse-Bedienfeld kann der Code wie erwartet kompiliert werden. Ich glaube, dass die gleiche Funktionalität mit "-lib foo.jar" von der Kommandozeile mit modernen Ameisen verfügbar ist.

Nun möchte ich von angebeninnerhalb build.xml, die ecj-3.5.jar auf meinem Klassenpfad haben soll. Wir können das schon mit Ameisenaufgaben machen, deshalb glaube ich, dass es möglich ist.

Die Frage ist also: Wie kann ich den von Javac zum Auffinden des Compilers verwendeten Klassenpfad ergänzen?nur aus build.xml heraus?

Es scheint, dass das kommende ant4eclipse 1.0 den Eclipse-Compiler enthält (wofür ich dies verwenden wollte). Ein Upgrade auf diesen Compiler (von 0,5) sollte also das Problem lösen, das wir haben.

2010-09-24: Ant4Eclipse ist immer noch auf M4, ohne anzugeben, wann die Veröffentlichung erfolgen wird.

01.12.2011: Wir sind jetzt von Ant auf Maven umgezogen. Die build.xml-Skripte haben die Komplexitätsgrenze überschritten, und ein neuer Ansatz war erforderlich. Jeder, der entscheiden muss, was zu tun ist - gehen Sie nicht den Pfad von ant4eclipse, außer bei trivialen Projekten.

2012-11-30: Ein Jahr später ist die Erfahrung der Maven noch immer überwiegend gut. Es gibt viele Macken und Veränderungen in der Denkweise, aber die meisten sind im Kontext sinnvoll. Maven kann auf einfache Weise die Compilerebene für einzelne Projekte festlegen. Wir haben uns aus mehreren Gründen vorgenommen, ecj anstelle von javac zu verwenden, aber für die meisten Zwecke funktioniert javac gut.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage