Lors de l'utilisation de ivy:retrieve
, la résolution de la dépendance à télécharger ne peut pas être résolue. La sortie ressemble à ceci:
Buildfile: C:\Users\Simon\workspace\apollo\build.xml
init:
resolve:
BUILD FAILED
C:\Users\Simon\workspace\apollo\build.xml:42: Problem: failed to create task or type antlib:org.Apache.ivy.ant:retrieve
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-C:\Users\Simon\Eclipse\plugins\org.Apache.ant_1.8.2.v20120109-1030\lib
-C:\Users\Simon\.ant\lib
-a directory added on the command line with the -lib argument
Total time: 348 milliseconds
La section correspondante du build.xml
ressemble à ceci:
<target name="resolve" depends="init">
<ivy:retrieve pattern="${lib}/[artifact]-[revision].[ext]" sync="true" />
</target>
Voici également une liste de ce qu'il devrait télécharger (à partir du build.xml
)
<target name="doc" depends="build">
<javadoc sourcepath="${src}" classpathref="libraries" access="private" destdir="${doc}" windowtitle="Apollo">
<doclet name="org.jboss.apiviz.APIviz" pathref="libraries">
<param name="-sourceclasspath" value="${bin}" />
<param name="-author" />
<param name="-version" />
<param name="-use" />
<param name="-nopackagediagram" />
</doclet>
<doctitle><![CDATA[<h1>Apollo</h1>]]></doctitle>
<link href="http://download.Oracle.com/javase/6/docs/api/" />
<link href="http://docs.jboss.org/netty/3.2/api/" />
<link href="http://guava-libraries.googlecode.com/svn/trunk/javadoc/" />
<link href="http://www.junit.org/apidocs/" />
<link href="http://commons.Apache.org/compress/apidocs/" />
<link href="http://jruby.org/apidocs/" />
</javadoc>
</target>
ANT ne peut pas trouver le pot de lierre. Doit être téléchargé , extrait et le fichier ivy-x.y.z.jar placé dans l'un des emplacements suivants:
Ivy est présenté sous la forme d'un antlib , vous devez donc procéder comme suit:
1) Déclarer l'espace de noms ivy en haut du fichier de construction
<project ..... xmlns:ivy="antlib:org.Apache.ivy.ant">
2) Inclure le bocal en lierre dans l’un des répertoires de la bibliothèque de fourmis
Votre message d'erreur indique certains des emplacements possibles pour antlibs:
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-C:\Users\Simon\Eclipse\plugins\org.Apache.ant_1.8.2.v20120109-1030\lib
-C:\Users\Simon\.ant\lib
-a directory added on the command line with the -lib argument
Remarque:
La beauté d'un antlib réside dans le fait que vous n'avez pas besoin d'exécuter la taskdef (facultatif si vous souhaitez placer le bocal en lierre dans un emplacement non standard).
Même si le lierre est un sous-projet ANT, pour des raisons inexplicables, le lierre n’est pas fourni avec ANT ....
J'inclus normalement la cible suivante dans mes fichiers de construction pour configurer un nouvel environnement:
<target name="bootstrap" description="Used to install the ivy task jar">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/Apache/ivy/ivy/2.2.0/ivy-2.2.0.jar"/>
</target>
Il télécharge le pot de lierre de Maven Central.
Etant donné que toutes les autres tâches ANT peuvent ensuite être téléchargées à l'aide de ivy, peu de personnes s'opposent à ce petit morceau de laideur situé en haut du fichier de construction.
Si vous ne pouvez pas mettre les bibliothèques ivy dans le classpath pour ant, vous devrez le définir vous-même:
<path id="ivy.lib.path">
<fileset dir="path/to/dir/with/ivy/jar" includes="*.jar"/>
</path>
<taskdef resource="org/Apache/ivy/ant/antlib.xml"
uri="antlib:org.Apache.ivy.ant" classpathref="ivy.lib.path"/>
Ce bit manque dans le didacticiel de démarrage, mais est répertorié ici: http://ant.Apache.org/ivy/history/2.2.0/ant.html
Lorsque vous exécutez une tâche Ant, dans le chemin d'accès aux classes, vérifiez que le fichier ivy.jar est présent. Dans l'onglet Eclipse -> Exécuter en tant que> Ant Build -> Modifier la configuration -> Classpath. Même si Eclipse aurait le fichier ivy.jar dans ANT Home, il n’appelle pas pour une raison quelconque.
Même après avoir ajouté ivy jar
au ant lib
, il n'a pas été ramassé. Si vous sélectionnez à nouveau ANT_HOME
dans Preferences->Ant->Runtime
, le lib dir
sera actualisé et toutes les bibliothèques que vous y aurez ajoutées seront utilisées.
J'ai eu un problème similaire sur MacOSX (10.11.6 El Capitan). J'ai installé ant et Ivy avec le gestionnaire de paquets Brew.
Un autre moyen consiste à le définir manuellement à l’aide de l’option -lib, par exemple:
ant clean compile -lib /usr/local/Cellar/ivy/2.4.0/libexec/ivy-2.4.0.jar