7

私は Ivy にかなり慣れていませんが、jar の依存関係で動作するようになりました。問題はそれを設定しようとしているため、jar とは別に javadoc とソースを取得できます。

簡単なテスト プロジェクトがありますが、何をしていても、クラス ファイルを含む jar ファイルを取得しています。

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

そして、クラスを含むjarファイルをダウンロードする必要があります。

ただし、次のように入力すると:

$ ant -Divy.conf=sources

クラスではなくソースを含むjarファイルが必要で、これを入力すると:

$ ant -Divy.conf=javadoc

ソースではなく、javadoc を含む jar ファイルが必要です。

私はそれが完全に正しくないのは私のことだと確信して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>

これにより、jar、ソース、および javadoc がダウンロードされましたが、どの構成を試しても一度にダウンロードされました。

4

1 に答える 1

5

わかりました、私はそれを理解したと思います。私はこのプロセス全体を考えすぎていました。私の<dependencies>セクションは次のようになります。

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

これにより、 my が Mavenに、 myがjavadocMaven にマップされます。をマップしたとき、コンパイルの依存関係である Mavenにマップしていました。javadocsourcessourcesconf="sources->default"sourcesdefault

<artifact>すべての構成を 1 行で指定でき、個別のエンティティは必要ありません。

于 2012-09-06T17:33:46.017 に答える