1

Ivy での除外の正確な動作を理解するのに苦労しています。

commons-logging次の Ivy ファイルでは、前に置くとlog4jプルインjavax.activationとプルjavax.mailからプルするのlog4jに対し、後に置くとプルしないのはなぜですか。

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

    <configurations defaultconfmapping="default->runtime(*)" />

    <dependencies>
        <dependency org="log4j" name="log4j" rev="1.2.15">
            <exclude org="javax.activation" />
            <exclude org="javax.mail" />
        </dependency>
        <dependency org="commons-logging" name="commons-logging" rev="1.1" />

        <exclude org="com.sun.jdmk" />
        <exclude org="com.sun.jmx" />
        <exclude org="javax.jms" />
    </dependencies>
</ivy-module>
4

1 に答える 1

4

アクティベーション jar とメール jar はコモンズ ロギングの依存関係ですが、log4j 依存関係でそれらを除外しています...

単一の構成のみを使用すると、混合メッセージが ivy に送信されます。それらを除外する必要がありますか? 以下は、より明確になります。

<dependencies>
    <dependency org="log4j" name="log4j" rev="1.2.15"/>
    <dependency org="commons-logging" name="commons-logging" rev="1.1" />

    <exclude org="javax.activation" />
    <exclude org="javax.mail" />    
    <exclude org="com.sun.jdmk" />
    <exclude org="com.sun.jmx" />
    <exclude org="javax.jms" />
</dependencies>

除外がグローバルに設定されていると、混乱が少なくなります。

依存関係の解決を個別に維持したい場合は、複数の構成をセットアップする必要があります (これらを依存関係セットと考えてください)。

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

    <configurations>
       <conf name="log4j_deps" description="log4j dependencies"/>
       <conf name="commons_deps" description="commons-logging dependencies"/>
    </configurations>

    <dependencies>

        <dependency org="log4j" name="log4j" rev="1.2.15" conf="log4j_deps->runtime">
            <exclude org="javax.activation" />
            <exclude org="javax.mail" />
        </dependency>

        <dependency org="commons-logging" name="commons-logging" rev="1.1" conf="commons_deps->runtime"/>

        <exclude org="com.sun.jdmk" />
        <exclude org="com.sun.jmx" />
        <exclude org="javax.jms" />
    </dependencies>
</ivy-module>

依存関係の解決が明示的であるため、依存関係タグを切り替えても影響はありません。

  • Log4j とその依存関係は、 log4j_deps構成に関連付けられています。
  • commons の依存関係はcommons_deps構成に置かれます。
于 2013-09-04T20:13:48.553 に答える