【问题标题】:Maven3: How do I update the version of an indirect dependency?Maven3:如何更新间接依赖的版本?
【发布时间】:2022-08-03 09:01:39
【问题描述】:

我的一个模块中有以下依赖项。 它间接依赖于org.bouncycastle:bcprov-jdk15on:jar:1.68。 依赖关系树如下所示,供您参考。

我需要将bcprov-jdk15on:jar 升级到版本 1.70 以防安全漏洞。 知道怎么做吗? 我将非常感谢您的帮助

        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-spring-boot-starter</artifactId>
        </dependency>
[INFO] +- org.keycloak:keycloak-spring-boot-starter:jar:17.0.1:compile
[INFO] |  +- org.keycloak:keycloak-spring-boot-2-adapter:jar:17.0.1:compile
[INFO] |  |  +- org.keycloak:keycloak-spring-boot-adapter-core:jar:17.0.1:compile
[INFO] |  |  \\- org.keycloak:keycloak-core:jar:17.0.1:compile
[INFO] |  |     +- org.keycloak:keycloak-common:jar:17.0.1:compile
[INFO] |  |     \\- org.bouncycastle:bcpkix-jdk15on:jar:1.68:compile
[INFO] |  +- org.keycloak:keycloak-authz-client:jar:17.0.1:compile
[INFO] |  +- org.keycloak:spring-boot-container-bundle:jar:17.0.1:compile
[INFO] |  |  \\- org.keycloak:keycloak-adapter-core:jar:17.0.1:compile
[INFO] |  \\- org.keycloak:keycloak-spring-security-adapter:jar:17.0.1:compile
[INFO] |     +- org.keycloak:keycloak-adapter-spi:jar:17.0.1:compile
[INFO] |     \\- org.bouncycastle:bcprov-jdk15on:jar:1.68:compile
  • 只需使用您要使用的版本向您的项目添加显式依赖项...但我强烈建议升级 keycloak-spring-boot-starter... 版本..而不是...
  • 那对我不起作用。如果我添加直接依赖,那么我会得到两个 jar,一个是 1.68 中的间接依赖,另一个是直接 jar,即 1.70? PS:我确实将 keycloak-spring-boot-starter 升级到了最新版本,但这仍然取决于 1.68
  • That\'s not working for me. If I add the direct dependency, then I get two jars one is the indirect dependency pulled in 1.68 and the other is the direct jar, i.e. 1.70 能否显示输出,因为如果您直接在自己的项目中定义依赖项,则必须使用它...您如何生成输出?哪个版本的 Maven ?春季启动?你用的Maven版本JDK吗?
  • 我不直接使用它你能给我一个你想让我做什么的例子吗?
  • 你是什​​么意思:I don\'t use it directly ..???

标签: java dependencies maven-3


【解决方案1】:

RTFM

@khmarbaise 是对的,将显式依赖项添加到您想要的版本。您还可以在声明对keycloak-spring-boot-starter 的依赖时排除bcprov-jdk15on,这将使您的显式依赖声明成为依赖树中唯一的一个。

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk15on</artifactId>
      <version>1.70</version>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15on</artifactId>
      <version>1.70</version>
    </dependency>
    <dependency>
      <groupId>org.keycloak</groupId>
      <artifactId>keycloak-spring-boot-starter</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.bouncycastle</groupId>
          <artifactId>bcpkix-jdk15on</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.bouncycastle</groupId>
          <artifactId>bcprov-jdk15on</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

附言

只是不要使用keycloak-spring-boot-starterit is deprecated

您可以使用spring-addons-webmvc-jwt-resource-server。教程here

您也可以使用spring-boot-starter-oauth2-resource-server,但它需要更多的 Java 配置。教程there

【讨论】:

  • 这是个好建议。我们会在未来考虑
  • 如果排除bcprov-jdk15on 解决了您的问题,您能接受答案吗?
  • 排除图书馆并没有解决我的问题。某些功能停止工作
  • 您是否仅阅读了链接的文档?显式导入就足够了:它将使您定义的版本成为运行时解析的版本。排除项将使您的显式导入成为依赖关系图中的唯一条目(但当然,显式导入必须存在......)。
  • 看我的详细回答,还有,Read The Fukin Manual,你需要
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 2018-12-07
  • 2019-09-18
  • 2015-04-16
  • 2018-07-14
  • 1970-01-01
  • 2017-12-26
  • 2016-05-23
相关资源
最近更新 更多