Comment changer Ant compilateur de JDK 1.6
J'ai besoin de compiler mon code source pour être compatible avec le jre 1.6. Cependant, lorsque je tente de définir le compilateur attribut de la javac tâche à javac1.6, fourmi va encore compiler mon code avec javac1.7. J'ai également essayé le réglage du compilateur de la version "moderne" et qui n'a pas aidé.
<target name="compile-tests">
<javac compiler="javac1.6" includeantruntime="false" srcdir="${test.dir}"
destdir="${build.dir}" >
<classpath refid="class.path" />
</javac>
</target>
Mon JAVA_HOME est définie de JDK 1.6:
echo $JAVA_HOME </code> gives: <code>
/usr/lib/jvm/java-6-openjdk-amd64/
Mon ant version est:
Apache Ant(TM) version 1.8.2
Selon ce post, ant utilise son propre compilateur. Comment puis-je remplacer la fourmi par défaut?
Aussi, selon ce post et la fourmi de la documentation, je peux régler l'accumulation globale.compilateur de la propriété. Que dois-je définir cette propriété doit être et comment pourrais-je le faire?
Vous devez vous connecter pour publier un commentaire.
Je pense que la Fourmi
compiler
attribut est juste pour savoir les propriétés qui sont pris en charge par le compilateur. Dansjavac
en général, l'attribut ou de l'option à passer au compilateur esttarget
.Vous ne devriez même pas besoin d'avoir une version 6 de Java compilateur installé.
target
attribut si vous avez Java 7, 8 ou (probablement) les versions ultérieures.Dans le
javac
tâche, essayez de spécifier le compilateur Java par la définition de laexecutable
attribut comme suit:J'ai pensé qu'il serait bien d'ajouter une mise à jour de réponse à cette question, depuis que j'ai récemment traité avec beaucoup de maux de tête autour de cette même question. Mon cas d'utilisation spécifiques: Mon ordinateur utilise JRE1.8, mais j'avais besoin de fourmi pour cible JRE1.7 en cours d'exécution sur le serveur. Le truc pour moi c'était d'utiliser les attributs suivants en combinaison (qui font référence à la la documentation):
Vous ne pas devez spécifier le fichier exécutable, sauf si vous avez vraiment des dépendances spécifiques (par exemple, plus récente version entreprise, par opposition à la plus récente version gratuite).
Exemple:
Utiliser la "cible" de l'attribut de la Fourmi javac tâche de définir la version de Java que vous voulez que vos fichiers de classe pour être compatible avec (si réglé à "1.6" dans votre cas). Voir la documentation des tâches pour plus de détails.
Parler sur les bases de la Fourmi, car elle nécessite une JVM à exécuter, il est suffisant pour qu'il reconnaisse un JRE pour ce but. Toutefois, si le processus de construction doit compiler les classes puis il va être dépend d'un compilateur Java et si il ne trouve pas de puis la compilation échouera.
Il est possible de mettre en place et à utiliser l'un des nombreux compilateurs Java, cependant, je vais me concentrer sur Oracle javac pour l'explication ci-dessous. Voici les alternatives ...
1) Si le JRE reconnu par la Fourmi pour son exécution est un sous-répertoire sous le JDK, il va augmenter jusqu'à la JDK niveau et identifier les ressources nécessaires.
2) Si la variable d'environnement JAVA_HOME pointe vers une JVM (pas de JRE) puis ant sera en mesure de compiler Java artefacts
3) Sinon, comme la Fourmi de la documentation, JAVACMD peut être définie dans un fichier de commandes spécifiques à l'OS (antrc_pre.bat pour Windows) placé dans votre répertoire /home (et pas que de l'Ant), alors il sera de reconnaître la JVM. Veuillez noter JAVACMD devrait voir le chemin de Java.exe en vertu d'un dossier bin et pas de JVM maison.
4) Sinon la Fourmi de la ligne de commande peut prendre la liste des bibliothèques à l'aide de -l options. Passer une tools.jar à l'option-l et il suffirait.
5) Enfin fourche attribut de JavaC tâche peut être définie comme expliqué ci-dessus. Gardez à l'esprit, c'est consommatrice de ressources et n'est pas recommandé.