2011-11-29 9 views
9

मैं ivy का उपयोग करने की कोशिश कर रहा हूं: प्रकाशित करें जो मैंने एक jar प्रकाशित करने के लिए किया है जिसे मैंने .ivy रिपॉजिटरी में बनाया है, लेकिन मुझे कोई त्रुटि मिल रही है। मुझे पूरा यकीन है कि मैं इसे सही तरीके से उपयोग नहीं कर रहा हूं, इसलिए मुझे आशा थी कि कोई मुझे सही दिशा में इंगित कर सके। जब मैं निर्माण चलानेआईवी का उपयोग करने के मुद्दे: प्रकाशित कार्य

<target name="publish"> 
     <ivy-publish organisation="someorganisation" resolver="local" module="commonlib" revision="1.0.0"> 
       <artifacts pattern="build/[organisation]-[module](-[revision])(-[type]).[ext]" /> 
     </ivy-publish> 
    </target> 

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 

     <info 
      organisation="someorganisation" 
      module="commonlib" 
      status="integration"> 
     </info> 

    <dependencies> 
      <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/> 
      <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/> 
      <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/> 
      <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/> 
     </dependencies> 

    </ivy-module> 

:

root--| 
     |--src 
     |--build 
     |  | 
     |  |--someorganisation-commonlib-1.0.0.jar 
     | 
     |--ivy.xml 
     |--build.xml 

build.xml इस तरह दिखता है:

परियोजना संरचना कुछ इस तरह है .xml, मुझे निम्न त्रुटि मिलती है:

C:\workspaces\wkspc\someproject\build.xml:8: someorganization#commonlib;1.0.0: java.lang.IllegalStateException: ivy file not found in cache for someorganization#commonlib;1.0.0: please resolve dependencies before delivering (C:\Documents and Settings\someuser\.ivy2\cache\resolved-someorganization-commonlib-1.0.0.xml) 

उत्तर

15

आप अपनी आईवी फाइल में publications अनुभाग भूल गए हैं।

<ivy-module version="2.0"> 
    <info organisation="someorganisation" module="commonlib"/> 

    <publications> 
     <artifact name="commonlib" type="jar"/> 
    </publications> 

    <dependencies> 
     <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/> 
     <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/> 
     <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/> 
     <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/> 
    </dependencies>  
</ivy-module> 

स्थिति और संशोधन (pubrevision) क्षेत्रों publish कार्य द्वारा निर्दिष्ट किया जा सकता इस प्रकार है:

<ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" status="${publish.status}"> 
     <artifacts pattern="${build.dir}/[organisation]-[artifact].[ext]"/> 
    </ivy:publish> 

नोट 1:

यह करने के लिए आसान हो जाएगा नाम में संशोधन संख्या के बिना जार फ़ाइल उत्पन्न करें। बस आईवी के आर्टिफैक्ट पैटर्न को जार फ़ाइल लेने दें।

नोट 2:

आप अपने निर्माण में किसी चरण में एक आइवी लता संकल्प की आवश्यकता होगी, अन्यथा आइवी लता फ़ाइल संसाधित नहीं होती है।