web-dev-qa-db-ja.com

Antターゲットの失敗:AntlibまたはIvyの問題?

可能性のある複製:
Ivyは依存関係の解決に失敗し、原因を見つけることができません

次のビルドタスク(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は表示されません。

だから私はguessingAntlibを含まないAntのバージョンをダウンロードしましたが、今はIvy(Antlibを使用)を使用していますが、ビルドは窒息していますか?

これがAntlibの問題である場合、利用可能なディストリビューションの1つ here が必要だと思います。もしそうなら、誰かが私が使うべきものを確認できますか(それはAntlibのみを含み、他のものは含みません)、それをインストールするプロセスを確認します;つまり、$ {ANT_HOME}/libに正しいJARを置くのと同じくらい簡単ですか?等。

これがアイビーの問題である場合、誰かが私に何が起こっているのかについて正しい方向に向けることができますか?

これがAntlibでもIvyでもない場合は、上記の質問にも同じです。前もって感謝します!

25
IAmYourFaja

Apache IVYライブラリが欠落している可能性があると思います。ここからダウンロードしてください- Apache ivy ant libディレクトリのjarをコピーします。

例(必要に応じてバージョン番号を変更します):

  1. Antをダウンロードしてインストールします(例:C:\Apps\Tools\Apache-ant-1.9.7)。
  2. Ivyをダウンロードして抽出します(例:C:\Users\UserName\Downloads\Apache-ivy-2.4.0
  3. コピーC:\Users\UserName\Downloads\Apache-ivy-2.4.0\ivy-2.4.0.jar into C:\Apps\Tools\Apache-ant-1.9.7\lib

AntはIvyを使用するように構成されています。

61
Shwetanka