Sous ANT, comment définir une tâche uniquement si je dispose d'une version Java spécifique?

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

  •  02-07-2019
  •  | 
  •  

Question

Je crains qu'une étape spécifique de Ant ne puisse être exécutée que si Java 1.5 est installé sur l'ordinateur de génération. La définition de tâche utilisée utilise un fichier JAR compilé avec la version 1.5. Par conséquent, l’exécution avec une machine virtuelle 1.4 génère une exception IncompatibleClassVersion.

Je dois trouver une solution dans l'intervalle pour que cette tâche fonctionne pour ce projet spécifique nécessitant la version 1.4, mais une question m'est venue. Comment puis-je éviter de définir cette tâche et d’exécuter cette étape facultative si je n’ai pas de version Java spécifique?

Je pourrais utiliser le " si " ou " à moins que " balises sur la balise cible, mais celles-ci vérifient uniquement si une propriété est définie ou non. J'aimerais également disposer d'une solution ne nécessitant pas de bibliothèques supplémentaires, mais je ne sais pas si la fonctionnalité intégrée standard est suffisante pour effectuer une telle tâche.

Était-ce utile?

La solution

La version Java est exposée via la propriété ant.java.version . Utilisez une condition pour définir une propriété et exécuter la tâche uniquement si elle est vraie.

<?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>

Autres conseils

La propriété à archiver dans le fichier de construction est ${ant.java.version}.

Vous pouvez utiliser l'élément <condition> pour rendre une tâche conditionnelle. quand une propriété est égale à une certaine valeur:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top