2012-09-06 18 views
6

मैं आइवी के लिए बिल्कुल नया हूं, लेकिन इसे जार निर्भरताओं के साथ काम करने के लिए मिला है। समस्या इसे स्थापित करने की कोशिश कर रही है, इसलिए मैं जवाडॉक्स और स्रोतों को स्वतंत्र रूप से जार से ला सकता हूं।आइवी: जावडॉक्स और स्रोत प्राप्त करना

मेरे पास एक साधारण परीक्षण परियोजना है, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं क्या कर रहा हूं, मैं इसमें कक्षा फाइलों के साथ जार ला रहा हूं।

<ivy-module version="1.0"> 
    <info 
     organisation="com.vegicorp" 
     module="test" 
     revision="1.0" 
     status="release"/> 

    <configurations> 
     <conf name="default" visibility="public" extends="runtime,master"/> 
     <conf name="master" visibility="public"/> 
     <conf name="compile" visibility="public"/> 
     <conf name="provided" visibility="public"/> 
     <conf name="runtime" visibility="public" extends="compile"/> 
     <conf name="test" visibility="private" extends="runtime"/> 
     <conf name="system" visibility="public"/> 
     <conf name="sources" visibility="public"/> 
     <conf name="javadoc" visibility="public"/> 
     <conf name="optional" visibility="public"/> 
    </configurations> 

    <dependencies> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="compile->default"/> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="sources->default"> 
      <artifact name="commons-logging" type="sources" ext="jar"/> 
     </dependency> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="javadoc->default"> 
      <artifact name="commons-logging" type="javadoc" ext="jar"/> 
     </dependency> 
    </dependencies> 
</ivy-module> 

और निम्नलिखित build.xml:

मैं निम्नलिखित ivy.xml फ़ाइल है

<project name="ivy-test" default="default" basedir="." 
    xmlns:ivy="http://ant.apache.org/ivy"> 

    <property name="ivy.dir" value="${basedir}/ivy.dir"/> 
    <import file="${ivy.dir}/ivy.tasks.xml"/> 

    <property name="target.dir" value="${basedir}/lib"/> 
    <target name="-resolve"> 
     <ivy:resolve/> 
    </target> 

    <target name="clean"> 
     <delete dir="${target.dir}"/> 
     <ivy:cleancache/> 
    </target> 

    <target name="default" 
     depends="-resolve"> 

     <fail message="ivy.conf is not defined"> 
      <condition> 
       <not> 
        <isset property="ivy.conf"/> 
       </not> 
      </condition> 
     </fail> 

     <delete dir="${target.dir}"/> 
     <mkdir dir="${target.dir}"/> 
     <ivy:retrieve conf="${ivy.conf}" 
      pattern="${target.dir}/[artifact]-[revision].[ext]"/> 
    </target> 
</project> 

कमांड लाइन में, मैं टाइप करेंगे:

$ ant -Divy.conf=compile 

और, कि कक्षाओं के साथ jarfile डाउनलोड करना चाहिए।

लेकिन अगर मैं इसे इस टाइप करें:

$ ant -Divy.conf=sources 

मुझे लगता है कि स्रोतों और नहीं कक्षाएं शामिल जार फ़ाइल चाहते हैं, और जब मैं इस टाइप करें:

$ ant -Divy.conf=javadoc 

मैं जार फ़ाइल चाहते हैं जिसमें javadoc शामिल है और स्रोत नहीं।

मुझे पूरा यकीन है कि यह मेरा ivy.xml है जो बिल्कुल सही नहीं है। मैं मूल रूप से करने की कोशिश की इस:

<dependencies> 
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1"> 
     <artifact name="commons-logging" type="jar" ext="jar" conf="compile->default"/> 
     <artifact name="commons-logging" type="sources" ext="jar" conf="sources->default"/> 
     <artifact name="commons-logging" type="javadoc" ext="jar" conf="javadoc->default"/> 
    </dependency> 

कि एक बार कोई बात नहीं जो विन्यास मैंने कोशिश की पर जार, स्रोत और जावाडोक, लेकिन सभी डाउनलोड किया।

उत्तर

4

ठीक है, मुझे लगता है कि मैंने इसे समझ लिया है। मैं इस पूरी प्रक्रिया को सोच रहा था। मेरे <dependencies> अनुभाग इस तरह दिखना चाहिए:

<dependencies> 
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
     conf="javadoc->javadoc;sources->sources;compile->default"/> 
</dependencies> 

इस नक्शे मेरी javadoc Maven के javadoc और मेरे sources Maven के sources करने के लिए। जब मैंने conf="sources->default" मैप किया, तो यह मैवेन के default पर मेरे sources मैपिंग कर रहा था जो संकलन निर्भरता है।

मैं एक पंक्ति में सभी कॉन्फ़िगरेशन निर्दिष्ट कर सकता हूं, और मुझे अलग <artifact> इकाइयों की आवश्यकता नहीं है।

+0

conf = "javadoc, स्रोत, संकलन" भी काम करना चाहिए। – oers

+0

मुझे पता चला कि अगर मैं डिफ़ॉल्ट रूप से अपनी कॉन्फ़िगरेशन मैप नहीं करता हूं, तो मुझे यह सबकुछ मिलता है कि मैं इसे चाहता हूं या नहीं। आपके उदाहरण में, अगर मैंने कहा ' 'पुनर्प्राप्त करें, मुझे जार, जावाडोक और स्रोत मिलेंगे। उस मामले में, मैं केवल कक्षा जार चाहता हूँ। अगर मैं कहता हूं '' पुनर्प्राप्त करें 'मैं केवल जावाडोक चाहता हूं। –

+0

हाँ सही :) मैं भूल गया कि डिफ़ॉल्ट एक सिंगल के लिए मेवेन स्कोप है। तो इसे conf = "javadoc; स्रोत; संकलित-> डिफ़ॉल्ट" के लिए छोटा किया जा सकता है। मुझे लगता है। – oers

संबंधित मुद्दे