2010-03-29 6 views
3

Le script fourni here a donné un excellent moyen de vérifier si Ant utilise Java 6.avenir épreuvage version Java script ant l'enregistrement

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

Cependant, j'ai de bonnes raisons de penser la prochaine personne qui détient ma position peut-être pas un programmeur Java et je veux m'assurer que les builds ne tombent pas en panne à cause de Java 7. Y at-il un moyen de séparer une chaîne ou de demander Java 6 ou supérieur?

+0

Quelle est la raison pour laquelle vous avez besoin de connaître le niveau JVM dans votre script? –

+0

J'essaye de me protéger du Java 5 javac sur Mac 10.5. Ce javac n'est pas conscient des bibliothèques Java 6. La tâche dans Ant ne fournit pas un moyen de spécifier la version souhaitée, à moins d'utiliser et de donner le chemin exact de la corbeille. L'étiquette ne traite que de la compatibilité; il ne fait pas un vieux javac dans un vieux javaroot au courant des bibliothèques de jre dans un autre javaroot. –

+0

Bottom line: J'ai besoin de compiler un programme qui utilise la nouvelle classe Desktop, et je veux que le script avertisse les gens quand leur Java ne va pas le couper. De cette façon, ils n'obtiennent pas d'erreurs de compilation confuses sur les symboles inconnus. –

Répondre

0

Vous pouvez utiliser la tâche ContainsRegEx pour effectuer une correspondance regex sur la chaîne de version java. Sinon, beaucoup dépend de ce que vous gardez avec cette vérification de version. Par exemple, la tâche javac permet de spécifier la version de la JVM pour laquelle vous ciblez les classes construites. Ainsi, si vous décidez de ne pas utiliser l'approche conditionnelle dans votre exemple, cela peut dépendre des tâches particulières qui supportent la façon dont elles fonctionnent avec différentes versions de JVM.

1

Prenez garde, la ant.java.version retourne la version avec laquelle Ant JDK est construit à Ant 1.6.5 ...