Java Maven依赖项选择

Java Maven依赖项选择,java,rest,maven,jersey,Java,Rest,Maven,Jersey,我遇到了一个我拥有的web应用程序的问题 该web应用程序使用jersey库,具体版本为1.8 <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.8</version> </dependency>

我遇到了一个我拥有的web应用程序的问题

该web应用程序使用jersey库,具体版本为1.8

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

泽西岛
泽西服务器
1.8
问题是上游依赖依赖于另一个Jersey版本2.3,如下所示:

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

org.glassfish.jersey.core
泽西服务器
2.3
这会在最初加载Jersey 1.8时给我带来问题,但当调用方法时,似乎在Jersey server 2.3中调用了


我想知道我能做些什么来排除我不想要的jersey服务器吗?

您可以在依赖项部分用这种声明排除依赖项

<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>

您的.upstream.dependency.groupid


请注意,这可能会产生非常糟糕的影响,特别是因为您正在排除一些看起来较新的内容(即2.3版,但具有不同的groupid)

您可以在“依赖项”部分使用这种声明排除依赖项

<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>

您的.upstream.dependency.groupid


请注意,它可能会产生非常糟糕的影响,特别是因为您正在排除一些看起来较新的内容(即版本2.3,但具有不同的groupid)

以排除可传递的依赖项:

<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>

...
groupid.of.what.needs.jersey
需要什么,需要什么,球衣
1
org.glassfish.jersey.core
泽西服务器
2.3


但是,存在另一个依赖项可能与Jersey 1.8不兼容的危险。如果可能,最好自己使用相同的版本。

要排除可传递依赖项:

<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>

...
groupid.of.what.needs.jersey
需要什么,需要什么,球衣
1
org.glassfish.jersey.core
泽西服务器
2.3


但是,存在另一个依赖项可能与Jersey 1.8不兼容的危险。如果可能的话,最好自己使用相同的版本。

谢谢ben75,这就是解决方案。我会接受以上的答案,因为这是第一次。谢谢你。事实上,ben75刚刚在我的答案之前得到了他的答案(当我打字的时候!)谢谢你ben75,这就是解决办法。我会接受以上的答案,因为这是第一次。谢谢。事实上,ben75刚刚在我的答案之前得到了他的答案(当我打字的时候!)