2

ivy を使用してプロジェクトに jersey-servlet を含めようとしています。私の依存関係は次のようになります。

<dependency org="com.sun.jersey"    name="jersey-servlet"   rev="${jersey.version}"/>

...しかし、未解決の依存関係がいくつかあります:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: org.eclipse.persistence#org.eclipse.persistence.moxy;2.3.2: not found
[ivy:resolve]       :: org.jboss.spec.javax.interceptor#jboss-interceptors-api_1.1_spec;${interceptor.api.version}: not found
[ivy:resolve]       :: javax.inject#javax.inject;${atinject.api.version}: not found
[ivy:resolve]       :: org.jboss.weld#weld-api;1.1.4.Final: not found
[ivy:resolve]       :: org.jboss.weld#weld-spi;1.1.4.Final: not found
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::

私の調査によると、weld-spi/api 1.1.4.Finalは存在しません。これらは、weld-osgi-bundle-1.1.4.Final.jar の依存関係のようです。しかし、その jar を開いて META-INF ディレクトリ内を掘り下げると、weld-spi/api 1.1.Finalへの参照が存在します。

さらに、maven リポジトリでは、weld-osgi-bundle 1.1.4.Final の依存関係テーブルのバージョン列に何も表示されません。

アイビーはすべての依存関係について、weld-osgi-bundle の 1.1.4.Final バージョンにデフォルト設定されているのに対し、maven は依存関係の正しいバージョンを見つける場所を知っているのでしょうか?

アイビーでこれを回避する方法はありますか?

==> Eyads のコメントに基づいて、現在動作中の ivy.xml で更新中:

ivy.xml には次の依存関係があります。

<dependency org="com.sun.jersey" name="jersey-servlet" rev="${jersey.version}" transitive="false"/>
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" force="true"/>

注意してください、moxy 依存関係を乗り越えるために eclipselink リポジトリも追加する必要がありました。

<ibiblio
name="eclipselink"
m2compatible="true"
root="http://download.eclipse.org/rt/eclipselink/maven.repo"
/>
4

2 に答える 2

2

依存関係タグに「force=true」を使用して、必要なバージョンにその依存関係を含めてみてください。完全に正しいかどうかはわかりませんが、この最後の依存関係は ivy.xml ファイルで明示的に宣言されていないため、明示的に追加することができます。

<dependency org="com.sun.jersey"    name="jersey-servlet"   rev="${jersey.version}" transitive="false" />

依存関係タグの推移的な属性に注意してください。

これにより、必要な依存関係 (明らかに溶接 API) がもたらされなくなります。

==============

アップデート:

私の会社でも同じ問題が発生していますが、理由は異なります。別の依存関係を含めようとしていました

<dependency org="org.jboss.weld.se" name="weld-se-core" rev="1.1.8.Final" />

これは、1.1.8.Final のリビジョンで、weld-api とweld-spi を取得しようとします。私たちが目にした理由は、maven pom には、別の親 pom に依存する親依存関係の「インポート」タグがあるためです (一言で言えば)。

そのため、Ivy はそれに対処する方法を知らず、api と spi に対して 1.1.Final を宣言するバージョンではなく、現在のバージョン 1.1.8.Final を使用します。

IVY を解決し、フォルダー org.jboss.weld.se の 1 つをキャッシュから削除しますが、org.jboss.weld は保持してから、再度解決します。

または、それらを追加することもできます:

<dependency org="org.jboss.weld" name="weld-spi" rev="1.1.Final" force="true"/>
<dependency org="org.jboss.weld" name="weld-api" rev="1.1.Final" force="true"/>

元の依存関係のすぐ上。

後で配置すると、バージョンのオーバーライドに失敗します。

于 2012-07-29T21:25:57.753 に答える
0

これはバグhttps://issues.apache.org/jira/browse/IVY-1376です。したがって、解決策は次のとおりです。修正を待ち、待っている間にバグを投票してください。

于 2012-11-23T09:51:32.083 に答える