2012-10-01 49 views
23

可能重复:
Ivy fails to resolve a dependancy, unable to find causeAnt目标失败:Antlib还是常春藤问题?

我试图运行下面的生成任务(initIvy):

<?xml version="1.0" encoding="UTF-8"?> 
<project name="myproject-build" default="package" basedir=".." xmlns:ivy="antlib:org.apache.ivy.ant"> 
    <property file="build/build.properties"/> 
    <property environment="env"/> 

    <!-- Ant library path, including all of its plugins. --> 
    <path id="ant.lib.path"> 
     <fileset dir="${env.ANT_HOME}/lib" includes="*.jar"/> 
    </path> 

    <!-- CONFIGURE IVY --> 
     <taskdef resource="org/apache/ivy/ant/antlib.xml" 
      uri="antlib:org.apache.ivy.ant" classpathref="ant.lib.path"/> 

    <!-- Use Ivy tasks to resolve dependencies into the local Ivy cache. --> 
    <target name="initIvy"> 
     <!-- Initialize Ivy and connect to host repository. --> 
     <echo message="Initializing Apache Ivy and connecting to the host repository."/> 
     <ivy:settings url="${ivy.std.repo.settings.url}" realm="${ivy.std.repo.realm}" username="${ivy.std.repo.username}" passwd="${ivy.std.repo.password}"/> 

     <!-- Clear/flush the Ivy cache. --> 
     <echo message="Cleaning the local Ivy cache for the current build."/> 
     <ivy:cleancache/> 
    </target> 

    <!-- Rest of buildfile omitted for brevity. --> 

</project> 

当我运行ant -buildfile build.xml initIvy我得到以下输出:

Buildfile: /<path-to-my-project>/build/build.xml 
    [taskdef] Could not load definitions from resource org/apache/ivy/ant/antlib.xml. It could not be found. 

initIvy: 
    [echo] Initializing Apache Ivy and connecting to the host repository. 

BUILD FAILED 
/<path-to-my-project>/build/build.xml:81: Problem: failed to create task or type antlib:org.apache.ivy.ant:settings 
    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: 
    -/<path-to-my-ANT_HOME>/lib 
    -/home/myUser/.ant/lib 
    -a directory added on the command line with the -lib argument 

当我转到$ {ANT_HOME}/lib时,没有看到任何标有“antlib * .jar”的JAR。

所以我猜测我下载了一个不包含Antlib的Ant的版本,现在我正在使用常春藤(使用Antlib),构建是窒息?

如果这是一个Antlib问题,那么我相信我想要一个可用的发行版here。如果是这样,有人可以确认我应该使用哪一个(只包含Antlib而不包含其他任何东西),并确认安装它的过程;即,将正确的JAR放入$ {ANT_HOME}/lib中一样简单?等

如果这是一个常春藤问题,那么有人可以指出我在正确的方向,可能会发生什么?

如果这既不是Antlib也不是常春藤,那么直接上面的问题同样如此。提前致谢!

回答

55

我想你可能会缺少Apache IVY库。从此处下载 - apache ivy将jar复制到您的ant lib目录中。

例如(变化的版本号为适当):

  1. 下载并安装Ant(例如,C:\Apps\Tools\apache-ant-1.9.7)。
  2. 下载并提取常春藤(例如,C:\Users\UserName\Downloads\apache-ivy-2.4.0
  3. 复印C:\Users\UserName\Downloads\apache-ivy-2.4.0\ivy-2.4.0.jarC:\Apps\Tools\apache-ant-1.9.7\lib

Ant配置为使用Ivy。

+0

当 - 就是这样。我刚刚复制了Ivy JAR,忘记复制Ivy JAR。出于好奇,这是什么给了你(右)的想法?只是试图学习,所以下次我可以自己诊断问题!再次感谢! – IAmYourFaja

+3

@ 4herpsand7derpsago [antlib](https://ant.apache.org/manual/Types/antlib.html)是ant中的通用术语,而不是单独的工具。如果你得到“无法从资源org/apache/ivy/ant/antlib.xml加载定义,它找不到” “,那么它意味着在classpath中没有jar文件,它包含和”org /apache/ivy/ant/antlib.xml“,并且因为这个文件是ivy.xml的一部分,所以你知道缺少这个lib。 – oers

+5

更方便的方法是使用[Ivy Eclipse Update Site](http:/ /www.apache.org/dist/ant/ivyde/updatesite) - 安装“Apache Ivy”-Libs(Apache Ivy和Apache Ivy Ant Taks) – teclis