2008-09-29 16 views
5

Tengo el problema de que un paso específico en Ant solo se puede ejecutar cuando tenemos Java 1.5 instalado en la computadora de compilación. La definición de la tarea utiliza un archivo jar que se compiló utilizando 1.5, por lo que ejecutar con una máquina virtual 1.4 generará una excepción IncompatibleClassVersion.Al usar ANT, ¿cómo puedo definir una tarea solo si tengo alguna versión java específica?

Tengo que encontrar una solución mientras tanto para que esta tarea funcione para este proyecto específico que requiere 1.4, pero me surgió una pregunta. ¿Cómo puedo evitar definir esta tarea y ejecutar este paso opcional si no tengo una versión java específica?

Podría utilizar las etiquetas "if" o "unless" en la etiqueta de destino, pero solo verifican si una propiedad está configurada o no. También me gustaría tener una solución que no requiera bibliotecas adicionales, pero no sé si la funcionalidad incorporada en el estándar es suficiente para realizar dicha tarea.

Respuesta

10

La versión de Java está expuesta a través de la propiedad ant.java.version. Use una condición para establecer una propiedad y ejecutar la tarea solo si es verdadera.

<?xml version="1.0" encoding="UTF-8"?> 

<project name="project" default="default"> 

    <target name="default" depends="javaCheck" if="isJava6"> 
     <echo message="Hello, World!" /> 
    </target> 

    <target name="javaCheck"> 
     <echo message="ant.java.version=${ant.java.version}" /> 
     <condition property="isJava6"> 
      <equals arg1="${ant.java.version}" arg2="1.6" /> 
     </condition> 
    </target> 

</project> 
2

La propiedad para comprobar en el BuildFile es ${ant.java.version}.

se puede utilizar el elemento de <condition> para hacer una tarea condicional cuando una propiedad es igual a un valor determinado:

<condition property="legal-java"> 
    <matches pattern="1.[56].*" string="${ant.java.version}"/> 
</condition> 
+0

Ahhh es una pena que tengo que usar Ant 1.6! ¡Esta funcionalidad regexp solo está disponible desde ant 1.7! –

Cuestiones relacionadas