2012-07-18 13 views
6

Ho bisogno di compilare il mio codice sorgente per essere compatibile con jre 1.6. Tuttavia, quando tento di impostare l'attributo del compilatore del task javac come javac1.6, formerà ancora il mio codice con javac1.7. Ho anche provato a impostare la versione del compilatore come "moderna" e questo non ha aiutato.Come modificare il compilatore Ant su JDK 1.6

<target name="compile-tests"> 
    <javac compiler="javac1.6" includeantruntime="false" srcdir="${test.dir}" 
    destdir="${build.dir}" > 
     <classpath refid="class.path" /> 
    </javac> 
</target> 

mio JAVA_HOME sia impostata JDK 1.6:

echo $JAVA_HOME </code> gives: <code> 
/usr/lib/jvm/java-6-openjdk-amd64/ 

La mia versione formica è: Apache Ant (TM) versione 1.8.2

Secondo this post, formica utilizza il proprio compilatore . Come sovrascrivere il valore predefinito della formica? Inoltre, in base a this post e alla documentazione ant, posso impostare la proprietà globale build.compiler. Cosa devo impostare come proprietà e come potrei farlo?

risposta

5

Penso Ant compiler attributo è solo per sapere quali proprietà sono supportate dal compilatore. In javac in generale l'attributo o l'opzione da passare al compilatore è target.

Non si dovrebbe nemmeno aver bisogno di avere un compilatore Java 6 installato.

+0

"Non dovresti nemmeno aver bisogno di avere un compilatore Java 6 installato." ? –

+0

@BlessedGeek Sì, dovresti essere in grado di utilizzare l'attributo 'target' se hai Java 7, 8 o (probabilmente) versioni successive. – madth3

24

Nel compito javac, provare a specificare il compilatore Java impostando l'attributo executable come segue:

<property name="JDK1.6.dir" location="/usr/lib/jvm/java-6-openjdk-amd64" /> 
<property name="javac1.6" location="${JDK1.6.dir}/bin/javac" /> 

<target name="compile-tests"> 
    <javac executable="${javac1.6}" 
     fork="yes" 
     includeantruntime="false" 
     srcdir="${test.dir}" 
     destdir="${build.dir}" > 
    <classpath refid="class.path" /> 
    </javac> 
</target> 
+0

Grazie. Questo funziona per sovrascrivere il compilatore. Hai risposto alla mia domanda. – user847352

1

Utilizzare l'attributo "target" dell'attività Ant javac per definire la versione di Java con cui si desidera che i file di classe siano compatibili (quindi impostarlo su "1.6" nel proprio caso). Vedi lo task documentation per maggiori dettagli.

0

Parlando delle basi di Ant, poiché richiede l'esecuzione di una JVM, è sufficiente che riconosca un JRE per questo scopo. Tuttavia, se il processo di compilazione ha bisogno di compilare le classi, dipenderà da un compilatore Java e se non lo trova, la generazione fallirà.

È possibile configurare Ant per utilizzare uno dei numerosi compilatori Java, tuttavia mi concentrerò sul javac di Oracle per la spiegazione riportata di seguito. Ecco le alternative ...

1) Se il JRE riconosciuto da Ant per la sua esecuzione è una sottocartella sotto il JDK, si alza fino al livello JDK e identifica le risorse richieste.

2) Se variabile d'ambiente JAVA_HOME sia impostata punta a una JVM (non JRE) allora formica sarà in grado di compilare artefatti Java

3) In alternativa, come per la documentazione Formica, JAVACMD può essere impostato in un batch file specifico per il sistema operativo (antrc_pre.bat per Windows) posto sotto la directory home (e non quella di Ant), quindi riconoscerà la JVM. Si noti che JAVACMD deve fare riferimento al percorso completo di Java.exe in una cartella bin e non in JVM home.

4) In alternativa, la riga di comando Ant può richiedere l'elenco di librerie utilizzando le opzioni -l. Passare un tools.jar all'opzione -l e sarebbe sufficiente.

5) Infine l'attributo fork del task JavaC può essere impostato come spiegato sopra. Tieni presente che questo è un uso intensivo delle risorse e non consigliato.

Problemi correlati