Cuando uso ANT, ¿cómo puedo definir una tarea solo si tengo alguna versión específica de Java?

StackOverflow https://stackoverflow.com/questions/147850

  •  02-07-2019
  •  | 
  •  

Pregunta

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 tarea utiliza un archivo jar que se compiló con 1.5, por lo que ejecutar con una máquina virtual 1.4 generará una excepción IncompatibleClassVersion.

Mientras tanto, tengo que encontrar una solución 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 específica de Java?

Podría usar " if " o " a menos que " etiquetas 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 integrada en el estándar es suficiente para realizar dicha tarea.

¿Fue útil?

Solución

La versión de Java se expone 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>

Otros consejos

La propiedad para verificar en el archivo de compilación es ${ant.java.version}.

Puede usar el elemento <condition> para hacer una tarea condicional cuando una propiedad es igual a un cierto valor:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top