2012-03-24 80 views
27

ivy:retrieveを使用中、ダウンロードする必要のある依存関係を解決できません。出力は次のようになりますIvyが依存関係を解決できず、原因を見つけることができません。

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 

build.xmlの関連セクションはそうのようになります。ここでは

<target name="resolve" depends="init"> 
    <ivy:retrieve pattern="${lib}/[artifact]-[revision].[ext]" sync="true" /> 
    </target> 

ものリストが何であるか、それは

<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> 
build.xmlから)をダウンロードする必要があります

答えて

46

ANTは、ツタのjarファイルを見つけることができません。抽出された、downloadedする必要があり、次のいずれかの場所に置かツタ-xyzjar:

  • $ ANT_HOME/libに
  • $ HOMEツタを有効にする

のlib// .ant

アイビーはそうあなたがツタnを宣言し、次の

1) を行う必要があり、それを可能にするために、antlibとしてパッケージ化され

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 
:ビルドファイルの先頭にamespace

<project ..... xmlns:ivy="antlib:org.apache.ivy.ant"> 

2) はあなたのエラーメッセージがantlibsのための可能な場所のいくつかをindictatesアリライブラリディレクトリの1

にツタの瓶を含めます

注:

にantlibの美しさは、あなたがあたりに必要としないということですツタはツタがあるいくつかの不可解な理由のために、ANTサブプロジェクトであっても、ビルド

をブートストラップする方法のtaskdef(あなたは非標準の場所にツタジャーを配置したい場合にはオプションです)

を形成それは、Mavenの中央からツタジャーをダウンロード

<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> 

:ANTにパッケージされていません....

私は、通常のセットアップに自分のビルドファイルに新しい環境を次のターゲットが含まれます。

他のすべてのANTタスクは、その後、アイビーを使用してダウンロードできるので、ビルドファイルの上部にあるこの醜い部分にはほとんど反対します。

+0

非常に詳しい。 –

+0

クイックフィードバック質問:あなたのant_home/libにivyがある場合は、taskdefは必要ありませんか?それは全く新しいものでした:D – oers

+3

はい。なぜANTプロジェクトがデフォルトでアイビージャーを出荷しないのかというのは困惑しています。 –

11

antのクラスパスにivyライブラリを置くことができない場合は、自分で定義する必要があります:

<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

+0

エクリプス内にビルドすれば何か変わってしまいますが、これはすべてのアリを持つようです。 –

+0

@SimonSheehan ivyは実際にはアリの一部ではありません。それは別のライブラリなので、eclipseを使用するときは違いはありません。タスクを定義する必要があります(もちろん使用前)。 build.xmlの – oers

+0

私はこれを置いています。ちょうどどこに? –

4

Antタスクを実行するときに、クラスパスでivy.jarが存在することを確認します。 eclipse - > Run As-> Ant Build - > Edit configuration - > Classpathタブで実行します。 EclipseはANTホームにivy.jarを持っていても何らかの理由で呼び出されません。

0

MacOSX(10.11.6 El Capitan)でも同様の問題がありました。私はアリアイビーBrewパッケージマネージャーをインストールしました。

1つの追加の方法は、例えば、-libオプションを使用して手動で定義することです。:

ant clean compile -lib /usr/local/Cellar/ivy/2.4.0/libexec/ivy-2.4.0.jar 
0

はさえant libivy jarを追加した後、それが拾われていませんでした。 Preferences->Ant->RuntimeANT_HOMEを再度選択すると、lib dirが更新され、そこに追加したライブラリがすべて使用されます。

関連する問題