Je reçois l'avertissement suivant:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
Qu'est-ce que ça veut dire?
Je reçois l'avertissement suivant:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
Qu'est-ce que ça veut dire?
Réponses:
Réglez simplement includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
Si vous devez utiliser la javac
-tâche plusieurs fois, vous pourriez envisager d'utiliser PreSetDef
pour définir votre propre javac
-tâche qui est toujours définie includeantruntime="false"
.
Sur http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :
Cela est dû à une erreur introduite dans Ant 1.8. Ajoutez simplement un attribut de ce nom à la tâche javac, définissez-le sur false et oubliez que cela ne s'est jamais produit.
De http://ant.apache.org/manual/Tasks/javac.html :
Indique s'il faut inclure les bibliothèques d'exécution Ant dans le chemin de classe; par défaut à yes, sauf si build.sysclasspath est défini. Il est généralement préférable de définir ce paramètre sur false afin que le comportement du script ne soit pas sensible à l'environnement dans lequel il est exécuté.
Comme l'a mentionné @Daniel Kutik, presetdef
c'est une bonne option. Surtout si l'on travaille sur un projet avec de nombreuxbuild.xml
fichiers que l'on ne peut pas, ou préfère ne pas éditer (par exemple, ceux de tiers.)
Pour l'utiliser presetdef
, ajoutez ces lignes dans votre build.xml
fichier de niveau supérieur :
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
Désormais, toutes les javac
tâches suivantes hériteront essentiellement includeantruntime="false"
. Si vos projets ont réellement besoin de bibliothèques d'exécution ant, vous pouvez soit les ajouter explicitement à vos fichiers de construction OU définirincludeantruntime="true"
. Ce dernier supprimera également les avertissements.
Les javac
tâches suivantes peuvent toujours changer cela explicitement si vous le souhaitez, par exemple:
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
Je recommanderais de ne pas l'utiliser ANT_OPTS
. Cela fonctionne, mais cela va à l'encontre du but de l'avertissement. L'avertissement indique à quelqu'un que sa version peut se comporter différemment sur un autre système. L'utilisation ANT_OPTS
rend cela encore plus probable car maintenant chaque système doit être utilisé ANT_OPTS
de la même manière. S'appliquera également à l' ANT_OPTS
échelle mondiale, supprimant les avertissements au gré de tous vos projets
presetdef
astuce similaire peut-elle être faite pour fonctionner pour les tâches Ant non intégrées? J'ai essayé cela avec scalac
, mais parce que les build.xml
fichiers inférieurs doivent définir manuellement la scalac
tâche, ils remplacent tout ce que j'ai défini au niveau supérieur.
Chet Hosey a écrit une belle explication ici :
Historiquement, Ant a toujours inclus son propre runtime dans le chemin de classe mis à la disposition de la tâche javac. Ainsi, toutes les bibliothèques incluses avec Ant, et toutes les bibliothèques disponibles pour ant, sont automatiquement dans le chemin de classe de votre build, que cela vous plaise ou non.
Il a été décidé que ce n'était probablement pas ce que la plupart des gens voulaient. Alors maintenant, il y a une option pour cela.
Si vous choisissez "true" (pour includeeantruntime), alors vous savez au moins que votre chemin de classe de construction inclura le runtime Ant. Si vous choisissez "false", vous acceptez le fait que le comportement de génération changera entre les anciennes versions et 1.8+.
Aussi ennuyé que vous soyez de voir cet avertissement, vous seriez encore moins heureux si vos versions se cassaient complètement. Conserver ce comportement par défaut permet aux fichiers de construction non modifiés de fonctionner de manière cohérente entre les versions d'Ant.
La réponse de Daniel fonctionne parfaitement. Voici un exemple d'extrait que j'ai ajouté à mon build.xml:
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^ -->
<classpath>
<path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
<path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
</classpath>
</javac>
</target>
Si vous aimez que je travaille à partir de la ligne de commande, la réponse rapide est l'exécution
export ANT_OPTS=-Dbuild.sysclasspath=ignore
Et puis réexécutez votre script ant.
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
.
j'ai fait face à la même chose, je m'enregistre dans le programme et la fonctionnalité. il y avait une mise à jour a installer pour jdk1.8 qui n'est pas compatible avec mon ancien paramètre (jdk1.6.0) pour ant dans eclipse. J'installe cette mise à jour. en ce moment, mon projet de fourmi est de réussir.
Essayez-le, j'espère que cela vous sera utile.