eclipse - आइवी एक निर्भरता को हल करने में विफल रहता है, कारण खोजने में असमर्थ




ant ivy (4)

एंट आईवी जार नहीं ढूंढ सकता है। downloaded , निकालने, और ivy-xyzjar को निम्नलिखित स्थानों में से एक में रखा जाना चाहिए:

  • $ ANT_HOME / lib
  • $ HOME / .ant / lib

आईवी सक्षम करना

आइवी को antlib रूप में पैक किया जाता है, इसलिए इसे सक्षम करने के लिए आपको निम्न कार्य करने की आवश्यकता होती है

1) बिल्ड फ़ाइल के शीर्ष पर आईवी नेमस्पेस घोषित करें

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

2) चींटी लाइब्रेरी निर्देशिकाओं में से एक में ivy जार शामिल करें

आपका त्रुटि संदेश एंटीलिब्स के लिए संभावित स्थानों में से कुछ को इंगित करता है:

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

ध्यान दें:

एंटीलिब की सुंदरता यह है कि आपको taskdef करने की आवश्यकता नहीं है (यह वैकल्पिक है यदि आप एक गैर मानक स्थान में आईवी जार रखना चाहते हैं)

एक बिल्ड बूटस्ट्रैप कैसे करें

भले ही आईवी एक एएनटी उप-प्रोजेक्ट है, कुछ अयोग्य कारणों के लिए आईवी को एएनटी के साथ पैक नहीं किया गया है ....

मैं सामान्य रूप से एक नया वातावरण स्थापित करने के लिए अपनी बिल्ड फ़ाइलों में निम्न लक्ष्य शामिल करता हूं:

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

यह मेवेन सेंट्रल से आईवी जार डाउनलोड करता है।

चूंकि अन्य सभी एएनटी कार्यों को बाद में आईवी का उपयोग करके डाउनलोड किया जा सकता है, इसलिए कुछ लोग बिल्ड फ़ाइल के शीर्ष पर कुरूपता के इस छोटे टुकड़े पर ऑब्जेक्ट करते हैं।

ivy:retrieve का उपयोग करते समय ivy:retrieve , यह निर्भरता को हल करने में विफल रहता है जिसे डाउनलोड किया जाना चाहिए। आउटपुट इस तरह दिखता है:

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>

यहां यह भी एक सूची है कि इसे डाउनलोड करना चाहिए ( 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>

जब आप चींटी कार्य चलाते हैं, कक्षा वर्ग में यह सुनिश्चित करता है कि ivy.jar वहां है। ग्रहण में -> चलाएं-> चींटी बिल्ड -> कॉन्फ़िगरेशन संपादित करें -> क्लासपाथ टैब। हालांकि ग्रहण में एंट होम में ivy.jar होगा, किसी कारण से इसे नहीं कहा जाता है।


यदि आप एंटी के लिए क्लासपाथ में ivy libs नहीं डाल सकते हैं तो आपको इसे स्वयं परिभाषित करने की आवश्यकता होगी:

<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 lib ivy jar जोड़ने के बाद भी, इसे उठाया नहीं जा रहा था। ANT_HOME फिर से ANT_HOME का चयन ANT_HOME Preferences->Ant->Runtime ANT_HOME Preferences->Ant->Runtime lib dir को रीफ्रेश करने का कारण बनता है, और आपके द्वारा जोड़े गए किसी भी पुस्तकालय को वहां ले जाया जाता है।