1

我的网络应用程序遇到问题。

该网络应用程序使用球衣库,特别是 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,但具有不同的 groupid)

于 2013-10-02T17:54:34.353 回答