2012-07-18 27 views
6

Necesito compilar mi código fuente para que sea compatible con jre 1.6. Sin embargo, cuando intento establecer que el atributo del compilador de la tarea javac sea javac1.6, ant aún compilará mi código con javac1.7. También he intentado configurar la versión del compilador para que sea "moderna" y eso no ayudó.Cómo cambiar el compilador Ant a 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> 

Mi JAVA_HOME se establece en JDK 1.6:

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

Mi versión hormiga es: Apache Ant (TM) versión 1.8.2

Según this post, hormiga utiliza su propio compilador . ¿Cómo anulo la hormiga predeterminada? Además, de acuerdo con this post y la documentación ant, puedo establecer la propiedad global build.compiler. ¿Cómo configuro esa propiedad y cómo puedo hacer eso?

Respuesta

5

creo Ant compiler atributo es sólo para saber qué propiedades están soportadas por el compilador. En javac en general, el atributo u opción para pasar al compilador es target.

Ni siquiera necesita tener un compilador Java 6 instalado.

+0

"Ni siquiera debería necesitar tener un compilador Java 6 instalado". ? –

+0

@BlessedGeek Sí, debería poder usar el atributo 'target' si tiene Java 7, 8 o (probablemente) versiones posteriores. – madth3

24

En la tarea javac, intente especificar el compilador de Java estableciendo el atributo executable de la siguiente manera:

<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

Gracias. Esto funciona para anular el compilador. Usted respondió mi pregunta. – user847352

1

Utilice el atributo "objetivo" de la tarea Ant javac para definir la versión de Java con la que desea que sus archivos de clase sean compatibles (por lo tanto, configúrelo en "1.6" en su caso). Vea el task documentation para más detalles.

0

Hablando de los conceptos básicos de Ant, ya que requiere una JVM para ejecutarse, es suficiente para que reconozca un JRE para este fin. Sin embargo, si el proceso de compilación necesita compilar clases, dependerá de un compilador Java y si no encuentra uno, la compilación fallará.

Es posible configurar Ant para usar uno de varios compiladores de Java, sin embargo, me centraré en Oracle javac para la explicación a continuación. Aquí están las alternativas ...

1) Si el JRE reconocido por Ant para su ejecución es un subdirectorio bajo el JDK, se elevará hasta el nivel JDK e identificará los recursos requeridos.

2) Si la variable de entorno JAVA_HOME se establece apuntando a una JVM (no JRE) a continuación, hormiga será capaz de compilar artefactos Java

3) Alternativamente, como por la documentación Ant, JAVACMD se puede establecer en un lote archivo específico para el sistema operativo (antrc_pre.bat para Windows) ubicado debajo del directorio de inicio (y no el de Ant), reconocerá la JVM. Tenga en cuenta que JAVACMD debe hacer referencia a la ruta completa de Java.exe en una carpeta bin y no en la página principal de JVM.

4) Alternativamente, la línea de comando Ant puede tomar la lista de bibliotecas utilizando -l opciones. Pase una opción tools.jar a -l y sería suficiente.

5) Finalmente, el atributo fork de la tarea JavaC se puede configurar como se explicó anteriormente. Tenga en cuenta que esto consume muchos recursos y no es recomendable.

Cuestiones relacionadas