ant javac-Adapter verwenden

Der Eclipse-Compiler kann unter Verwendung des javac-Adapters innerhalb einer Ant-Builddatei verwendet werden. Um den Eclipse-Compiler zu verwenden, definieren Sie einfach die Eigenschaft build.compiler in der Builddatei.

Damit der Stapelcompiler in einer Ant-Builddatei funktionsfähig wird, muss der Klassenpfad für Ant-Laufzeit den Eclipse-Stapelcompiler enthalten. Zur Ausführung der Ant-Builddatei gibt es folgende Möglichkeiten:

  1. Außerhalb von Eclipse: Die einfachste Möglichkeit, den Klassenpfad für Ant-Laufzeit einzurichten, besteht darin, die Datei ecj.jar mit dem Argument -lib hinzuzufügen oder in der Position ANT_HOME einen Speicherauszug davon zu erstellen.
  2. Innerhalb von Eclipse unter Verwendung derselben JRE wie Eclipse: Der Eclipse-Stapelcompiler wird dem Klassenpfad für Ant-Laufzeit implizit hinzugefügt.
  3. Innerhalb von Eclipse unter Verwendung einer anderen JRE: Der Eclipse-Stapelcompiler muss dem Klassenpfad für Ant-Laufzeit explizit hinzugefügt werden. Dies können Sie über die Datei ecj.jar erreichen, oder Sie können die JAR-Datei org.eclipse.jdt.core und die Datei jdtCompilerAdapter.jar verwenden, die sich innerhalb der JAR-Datei org.eclipse.jdt.core befinden. (Die letztgenannte JAR-Datei muss zuerst extrahiert werden.)

Beispiel:


<?xml version="1.0" encoding="UTF-8"?>
<project name="compile" default="main" basedir="../.">

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

 <property name="root" value="${basedir}/src"/>

 <property name="destdir" value="d:/temp/bin" />

 <target name="main">
  <javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
      <classpath>
        <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>

      </classpath>
  </javac>
 </target>
</project>

Die für die ant javac-Task verwendete Syntax finden Sie in der Dokumentation zur ant javac-Task. Der aktuelle Adapter unterstützt die Javac Ant_Task der Versionen 1.4.1 bis 1.6.5.

Wenn Sie eine Version höher als 1.5.0 verwenden, können Sie das verschachtelte Compilerargument-Element (<compilerarg>) verwenden, um compilerspezifische Optionen anzugeben.


...
<javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
    <classpath>
      <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>
    </classpath>

    <compilerarg compiler="org.eclipse.jdt.core.JDTCompilerAdapter" line="-1.5 -warn:+boxing"/>
</javac>
...

Hinweis:
  1. Zur Vermeidung compilerabhängiger Builddateien wird stark angeraten, ein Compilerargument <compilerarg> zu verwenden, dessen 'compiler'-Attribut den Wert org.eclipse.jdt.core.JDTCompilerAdapter hat. Ist dieses nicht eingestellt, kann die Builddatei nur mit dem Eclipse-Compiler verwendet werden. Ist dies so festgelegt, wird das verschachtelte Compilerargument ignoriert, falls der Name anders ist als der Compilername, der durch die Eigenschaft build.compiler angegeben wird.
  2. Mit <compilerarg> sollten keine Werte wie Zielwert, Quellenwert, Debugoptionen oder sonstige Optionen festgelegt werden, die mit den definierten Attributen der javac-Ant-Task angegeben werden könnten. Seine Verwendung muss der Übergabe compilerspezifischer Optionen wie zum Beispiel Warnungsoptionen vorbehalten sein. Wenn ein Befehlszeilenargument mehr als einmal angegeben ist, meldet der Eclipse-Stapelcompiler unter Umständen Fehler wie den folgenden:
    Doppelte Spezifikation für Zielkonformitätseinstellung: 1.5