2
<ivy-module version="2.0">
    <info organisation="com.travelclick" module="CoreWebServices" revision="4.1"/>
    <configurations defaultconfmapping="default">
        <conf name="runtime" visibility="public"/>
        <conf name="default" visibility="public"  extends="runtime"/>
    </configurations>

    <dependencies>
        <dependency org="com.travelclick"
            name="commons-all"
            rev="4.1"
            conf="default->default"/>

        <dependency org="com.sun.messaging.mq"
            name="jms"
            rev="4.5.2"
            conf="default->default"/>

        <dependency org="org.jboss.common"
            name="servlet-api"
            rev="4.2"
            conf="default->default"/>

        <dependency org="com.fiorano"
            name="framework"
            rev="2.0"
            conf="default->default"/>

        <dependency org="com.fiorano"
            name="fmq-client"
            rev="9.3.0"
            conf="default->default"/>

        <dependency org="commons-codec"
            name="commons-codec"
            rev="1.3"
            conf="default->default"/>

        <dependency org="commons-httpclient"
            name="commons-httpclient"
            rev="3.1"
            conf="default->default"/>

        <dependency org="commons-lang"
            name="commons-lang"
            rev="2.2"
            conf="default->default"/>

        <dependency org="commons-pool"
            name="commons-pool"
            rev="1.4"
            conf="default->default"/>
    </dependencies>
</ivy-module>

すべての依存関係はとして構成されていることに注意してくださいdefault->default

build.xmlの中には、次のステートメントがあります。

 <ivy:resolve conf="default"/>
 <ivy:cachepath pathid="all.libs" conf="default"/>

デフォルト構成を使用していることに注意してください。

パスを使用して、all.libs構築中の戦争にライブラリをダウンロードします。

私は戦争で次のライブラリを手に入れました。それが私が欲しいものです。

commons-all-4.1.jar
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang-2.2.jar
commons-logging-1.0.4.jar
commons-pool-1.4.jar
fmq-client-9.3.0.jar
framework-2.0.jar
jms-4.5.2.jar
servlet-api-4.2.jar

次に、構成情報を削除します。これはivy.xml<configurations>セクションが削除され、すべてがconf=default->default削除された場合と同じです。

<ivy-module version="2.0">
    <info organisation="com.travelclick" module="CoreWebServices" revision="4.1"/>

    <dependencies>
        <dependency org="com.travelclick"
            name="commons-all"
            rev="4.1"/>

        <dependency org="com.sun.messaging.mq"
            name="jms"
            rev="4.5.2"/>

        <dependency org="org.jboss.common"
            name="servlet-api"
            rev="4.2"/>

        <dependency org="com.fiorano"
            name="framework"
            rev="2.0"/>

        <dependency org="com.fiorano"
            name="fmq-client"
            rev="9.3.0"/>

        <dependency org="commons-codec"
            name="commons-codec"
            rev="1.3"/>

        <dependency org="commons-httpclient"
            name="commons-httpclient"
            rev="3.1"/>

        <dependency org="commons-lang"
            name="commons-lang"
            rev="2.2"/>

        <dependency org="commons-pool"
            name="commons-pool"
            rev="1.4"/>
    </dependencies>
</ivy-module>

build.xml当然、デフォルト構成への参照を削除するために変更する必要があります。

 <ivy:resolve/>
 <ivy:cachepath pathid="all.libs"/>

しかし、ここで何が含まれるかを見てください:

commons-all-4.1.jar
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang-2.2.jar
commons-logging-1.0.4.jar
commons-pool-1.4.jar
fmq-client-9.3.0.jar
framework-2.0.jar
jms-4.5.2.jar
servlet-api-4.2.jar

commons-httpclient-3.1-sources.jar
commons-codec-1.3-javadoc.jar
commons-codec-1.3-sources.jar
commons-lang-2.2-javadoc.jar
commons-lang-2.2-sources.jar
commons-pool-1.4-sources.jar

なぜ、すべてをデフォルトに設定すると、実際のjarのみがダウンロードされ、ソースjarとjavadocjarはダウンロードされません。それでも、すべての構成を削除すると、javadocとソースjarもダウンロードされました。

実際、Mavenリポジトリ内のさまざまなjarの構成はどこに保存されていますか?Mavenリポジトリにjavadocとソースが表示されますが、さまざまな構成については何も表示されませんでした。Ivyは、ソースjavadoc jarを含めるかどうかをどのように知るのですか?

4

1 に答える 1

3

ivyには標準のデフォルト設定はありません。各ivyファイルは、セクション内に独自のconfsのセットを定義します<configuration> ..</configuration>

最初の例では、それを定義してアーティファクトdefaultの構成にマッピングしました。defaultこれらの依存関係はMavenアーティファクトであり、ivyはmavenスコープをマップしますdefault(Ivyはmaven pomファイルを読み取り、そのためのivyファイルをキャッシュに作成します)。つまり、基本的には幸運なことにdefault、構成用のivyファイルにconfが存在していました。

confはマップされたMavenスコープであり、ivyにdefault事前定義された標準として存在しません。conf

2番目のconf="default->default"では、を省略しています。これ conf="*->*"は、依存関係のすべてconfをこのivyファイルのすべてにマップすることを意味します。

この質問は、ivyがMavenスコープをivy構成にマップする方法に答えます

要するに:

  • defaultjarを参照するだけのMavenスコープのデフォルトにマップします
  • スコープがないと宣言すると、ivy構成*にマップされます。これは、使用可能なすべての構成、したがって使用可能なすべてのMavenアーティファクトを参照します。
于 2012-07-16T19:50:40.547 に答える