1

私が持っている Web アプリケーションで問題に直面しています。

Web アプリは、ジャージー ライブラリと具体的にはバージョン 1.8 を使用します。

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>

問題は、アップストリームの依存関係が次のような別の Jersey バージョン 2.3 に依存していることです。

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.3</version>
    </dependency>

最初にJersey 1.8がロードされるため、これにより問題が発生しますが、メソッドが呼び出されると、Jersey-server 2.3で呼び出されるようです

不要なジャージサーバーを除外するためにできることはありますか?

4

2 に答える 2

4

推移的な依存関係を除外するには:

<project>
...
<dependencies>

 <dependency>
  <groupId>groupid.of.what.needs.jersey</groupId>
  <artifactId>artifactId.of.what.needs.jersey</artifactId>
  <version>1.0</version>
  <exclusions>
    <exclusion>  <!-- declare the exclusion here -->
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-server</artifactId>
      <version>2.3</version>
    </exclusion>
  </exclusions>

</dependency>

ただし、他の依存関係が Jersey 1.8 と互換性がない可能性があるという危険性があります。可能であれば、同じバージョンを自分で使用することをお勧めします。

于 2013-10-02T17:55:48.987 に答える
2

依存関係セクションでこの種の宣言を使用して依存関係を除外できます

<dependency>
  <groupId>your.upstream.dependency.groupid</groupId>
  <artifactId>your.upstream.dependency.artifactid</artifactId>
  <version>[upstream.dep.version]</version>
  <exclusions>
    <exclusion>  <!-- declare the exclusion here -->
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-server</artifactId>
    </exclusion>
  </exclusions> 
</dependency>

参照

特に新しいように見えるもの (つまり、バージョン 2.3 で、異なるグループ ID を持つもの) を除外しているため、非常に悪い影響を与える可能性があることに注意してください。

于 2013-10-02T17:54:34.353 に答える