升级 Spring 引导至 2.1.1 时出现传递依赖性错误

Transitive Dependency Errors When Upgrading Spring Boot To 2.1.1

我正在尝试将 spring 引导升级到最新版本 2.1.1。我的 java 基于 ee 的 Web 应用程序也使用 spring 框架、jersey 和 hk2 库。从 spring boot pom.xml 中识别依赖版本,我们可以看到它依赖于 spring framework 5.1.3 和 jersey 2.27。 Jersey 库依赖于 hk2 库——即 org.glassfish.hk2.external:javax.inject。以下是我们的应用程序使用的 jersey 和 hk2 库

Jersey libraries
    1. org.glassfish.jersey.core:jersey-server
    2. org.glassfish.jersey.containers:jersey-container-servlet-core
    3. org.glassfish.jersey.core:jersey-client
    4. org.glassfish.jersey.core:jersey-common
    5. org.glassfish.jersey.bundles.repackaged:jersey-guava
    6. org.glassfish.jersey.ext:jersey-spring3
    7. org.glassfish.jersey.containers:jersey-container-servlet
    8. org.glassfish.jersey.media:jersey-media-jaxb
    9. org.glassfish.jersey.media:jersey-media-json-jackson
    10. org.glassfish.jersey.ext:jersey-entity-filtering
HK2 libraries
    1. org.glassfish.hk2:spring-bridge
    2. org.glassfish.hk2:hk2-api
    3. org.glassfish.hk2:hk2-utils
    4. org.glassfish.hk2:hk2-locator
    5. org.glassfish.hk2.external:javax.inject
    6. org.glassfish.hk2.external:aopalliance-repackaged

除了两个库 - org.glassfish.jersey.bundles.repackaged:jersey-guava & org.glassfish.jersey.ext:jersey-[=36 之外,大多数球衣库都是 2.27 版=]3。他们的最新版本是 2.25.1。

对于hk2 (org.glassfish.hk2.external:javax.inject),最新版本是2.4.0.

  1. 我们应该如何解决上述依赖问题?对于球衣,我们应该使用最新版本,即 2.27,对于不存在的球衣,我们使用它们各自的版本。这会导致任何问题吗?
  2. 对于这种情况,是否有推荐的最佳做法?

我知道我们可以依靠测试,但我想看看我们是否可以提前发现问题。

解决方案是使用 jersey-spring4 依赖项并删除对 j​​ersey-guava 的依赖项。