Ivy не удается разрешить зависимость, не удается найти причину
при использовании ivy:retrieve
, он не может решить зависимость, которая должна быть загружена. Вывод выглядит следующим образом:
Buildfile: C:UsersSimonworkspaceapollobuild.xml
init:
resolve:
BUILD FAILED
C:UsersSimonworkspaceapollobuild.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:UsersSimoneclipsepluginsorg.apache.ant_1.8.2.v20120109-1030lib
-C:UsersSimon.antlib
-a directory added on the command line with the -lib argument
Total time: 348 milliseconds
соответствующий раздел build.xml
выглядит так:
<target name="resolve" depends="init">
<ivy:retrieve pattern="${lib}/[artifact]-[revision].[ext]" sync="true" />
</target>
вот также список того, что он должен загружать (из 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>
5 ответов
муравей не может найти банку плюща. Должно быть загрузить, извлечено, и ivy-x.y.z.jar помещается в одну из следующих локаций:
- $ANT_HOME / lib
- $ HOME/.ant / lib
включение ivy
плющ упакован как antlib, чтобы включить его, вам нужно сделать следующее
1) Объявите пространство имен ivy в верхней части файла сборки
<project ..... xmlns:ivy="antlib:org.apache.ivy.ant">
2) Включить плющ jar в одном из каталогов библиотеки ant
сообщение об ошибке indictates некоторые из возможных мест для 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
Примечание:
красота antlib заключается в том, что вам не нужно выполнять taskdef (это необязательно, если вы хотите разместить банку плюща в нестандартном месте)
как загрузить сборку
хотя ivy является подпроектом ANT, по какой-то необъяснимой причине ivy не упакован с Ant....
Я обычно включаю следующую цель в Мои файлы сборки для установки новой среды:
<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>
он загружает банку плюща из Maven Central.
поскольку все другие задачи ANT могут быть впоследствии загружены с помощью ivy, мало кто возражает против этого маленького кусочка уродства в верхней части файла сборки.
Если вы не можете поместить библиотеки плюща в путь к классам для ant, вам нужно будет определить его самостоятельно:
<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"/>
этот бит отсутствует в учебнике по началу работы, но указан здесь:http://ant.apache.org/ivy/history/2.2.0/ant.html
когда вы запускаете задачу Ant, в пути к классам убедитесь, что ivy.Джар там. На вкладке eclipse -> Run As-> Ant Build -> Edit configuration -> Classpath. Хотя затмение будет иметь плюща.баночка в муравейнике, почему-то она не называется.
У меня была аналогичная проблема на MacOSX (10.11.6 El Capitan). Я установил АНТ и Айви С квас диспетчер пакетов.
один из дополнительных способов-определить его вручную с помощью опции-lib, например:
ant clean compile -lib /usr/local/Cellar/ivy/2.4.0/libexec/ivy-2.4.0.jar
даже после добавления ivy jar
до ant lib
, его не поднимали. Выбор ANT_HOME
раз в Preferences->Ant->Runtime
вызывает lib dir
для обновления, и любые библиотеки, которые вы добавили там, чтобы быть приняты.