ant - आइवी: जावडॉक्स और सूत्रों का आह्वान करना



ivy (1)

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

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

मेरे पास निम्न ivy.xml फ़ाइल है:

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

<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

और, यह कक्षाओं के साथ जर्फ़ाइल डाउनलोड करना चाहिए

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

$ ant -Divy.conf=sources

मैं जार फ़ाइल चाहता हूँ जिसमें सूत्र शामिल है और वर्ग नहीं, और जब मैं इसे टाइप करता हूँ:

$ ant -Divy.conf=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>

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


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

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

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

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