eclipse - vanimir - Ivy no puede resolver una dependencia, no puede encontrar la causa
https elwiki net titles (5)
Al usar ivy:retrieve
, no puede resolver la dependencia que se debe descargar. La salida se ve así:
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 sección relevante de build.xml
ve así:
<target name="resolve" depends="init">
<ivy:retrieve pattern="${lib}/[artifact]-[revision].[ext]" sync="true" />
</target>
Aquí también hay una lista de lo que debería estar descargando (desde 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 no puede encontrar el tarro de hiedra. Necesita ser downloaded , extraído y el hiedra xyzjar colocado en una de las siguientes ubicaciones:
- $ ANT_HOME / lib
- $ HOME / .ant / lib
Permitir hiedra
Ivy está empaquetado como antlib , por lo que para habilitarlo debes hacer lo siguiente
1) Declare el espacio de nombres de hiedra en la parte superior del archivo de compilación
<project ..... xmlns:ivy="antlib:org.apache.ivy.ant">
2) Incluye el tarro de hiedra en uno de los directorios de la biblioteca ant
Su mensaje de error indica algunas de las ubicaciones posibles para 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
Nota:
La belleza de una antlib es que no necesita realizar la tarea (es opcional si desea colocar la jarra de hiedra en una ubicación no estándar)
Cómo iniciar una compilación
A pesar de que la hiedra es un subproyecto de ANT, por alguna razón inexplicable, la hiedra no está empaquetada con ANT ....
Normalmente incluyo el siguiente objetivo en mis archivos de compilación para configurar un nuevo entorno:
<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>
Descarga el frasco de hiedra de Maven Central.
Dado que todas las demás tareas de ANT se pueden descargar posteriormente utilizando hiedra, pocas personas se oponen a esta pequeña fealdad en la parte superior del archivo de compilación.
Cuando ejecuta la tarea Ant, en classpath asegúrese de que ivy.jar esté allí. En el eclipse -> Ejecutar como-> Ant Build -> Editar configuración -> pestaña Classpath. Aunque Eclipse tendría el ivy.jar en ANT Home, por alguna razón no se llama.
Incluso después de agregar la ivy jar
a la ant lib
, no se recogió. Al seleccionar ANT_HOME
nuevo en Preferences->Ant->Runtime
, se actualizará el lib dir
y se tomarán todas las bibliotecas que haya agregado allí.
Si no puede poner las libs de ivy en el classpath de hormiga, tendrá que definirlo usted mismo:
<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"/>
Este bit falta en el tutorial de inicio, pero se incluye aquí: http://ant.apache.org/ivy/history/2.2.0/ant.html
Tuve un problema similar en MacOSX (10.11.6 El Capitan). Instalé hormiga e Ivy con el administrador del paquete Brew .
Una forma adicional es definirlo manualmente usando la opción -lib, por ejemplo:
ant clean compile -lib /usr/local/Cellar/ivy/2.4.0/libexec/ivy-2.4.0.jar