12

依存関係管理に ivy を使用して ant でプロジェクトをビルドしています。ivysetting ファイルはありませんがivy.xml、次の依存関係があります (commons ロギングの代わりに slf4j で spring を使用したい):

<configurations>
  <conf name="compile" />
  <conf name="runtime" extends="compile"/>
</configurations>
<dependencies>
  <dependency org="org.springframework" name="spring-webmvc" rev="3.0.5.RELEASE" conf="compile->default">
    <exclude org="commons-logging" name="commons-logging"/>
  </dependency>
  <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" conf="compile->default" />
  <dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" conf="runtime->default" />
</dependencies>

しかし、コンパイル構成を解決すると、commons-logging解決されます。spring-coreまた、明示的な依存関係で除外を使用しようとしましたcommons-loggingが、常にコンパイル クラスパスに配置されます。

私のせいは何ですか?Commons Logging を使用していないということは、maven について説明していることではありませんか? アイビーバグですか?特別な設定が必要ですか?アイビーは何かをキャッシュしましたか?何か案が?

私は ant 1.8.2 と ivy 2.2.0 を使用しています。Eclipse で IvyDE を使用すると同じ問題が発生します。

4

3 に答える 3

24

の使用法は、<exclude />不明な理由で壊れているようです。
私は自分のPCで似たようなことを試しましたが、次のことがうまくいきました<dependencies />:

    <dependencies>
      <dependency org="org.springframework" name="spring-webmvc" rev="3.0.5.RELEASE" conf="compile->default">
      </dependency>
      <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" conf="compile->default" />
      <dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" conf="runtime->default" />
      <exclude org="commons-logging"/>
</dependencies>

もう一方が機能しない理由はわかりません。JIRA には、除外および循環依存関係に関するいくつかのバグがありますが、このケースには当てはまらないようです。多分それは本当のバグです。

于 2011-06-16T06:37:37.577 に答える