You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Maven库my-lib强制传递依赖版本至引入它的应用?

Maven工具库传递依赖版本强制问题

问题场景

我熟悉Maven项目(如my-app)强制传递依赖版本的方式,但现在遇到一个问题:作为被其他项目依赖的工具库my-lib,如何在不直接打包传递依赖的前提下,让引入它的my-app自动使用my-lib指定的传递依赖版本?

我的配置与现象

my-lib的依赖配置

在my-lib的pom.xml中声明了com.amazonaws:aws-lambda-java-log4j2:1.5.1,配置如下:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-lambda-java-log4j2</artifactId>
      <version>1.5.1</version>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-log4j2</artifactId>
  </dependency>
</dependencies>

父工程的BOM导入

为了覆盖Log4j的版本,我在my-lib的父工程my-lib-parent的dependencyManagement中导入了指定版本的Log4j BOM:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-bom</artifactId>
      <version>2.20.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

my-lib本地依赖树验证

执行mvn dependency:tree查看my-lib的依赖树,显示Log4j版本为2.20.0,符合预期:

[INFO] +- com.amazonaws:aws-lambda-java-log4j2:jar:1.5.1:compile
[INFO] |  +- org.apache.logging.log4j:log4j-core:jar:2.20.0:compile
[INFO] |  \- org.apache.logging.log4j:log4j-api:jar:2.20.0:compile

引入到my-app后的异常

将my-lib作为依赖加入my-app后,运行代码时出现java.lang.NoClassDefFoundError: org/apache/logging/log4j/BridgeAware错误。查看my-app的依赖树,发现Log4j版本变为2.17.1:

[INFO] |  +- com.amazonaws:aws-lambda-java-log4j2:jar:1.5.1:provided
[INFO] |  |  +- org.apache.logging.log4j:log4j-core:jar:2.17.1:provided
[INFO] |  |  \- org.apache.logging.log4j:log4j-api:jar:2.17.1:provided

只有my-lib中显式声明的org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.20.0在my-app中保持了正确版本。

疑问

是否必须枚举com.amazonaws:aws-lambda-java-log4j2的所有传递依赖并在my-lib中显式声明,才能让my-app使用指定版本?有没有类似导入BOM的简便方法,让my-lib强制所有Log4j传递依赖的版本给引入它的应用?


内容的提问来源于stack exchange,提问作者Garret Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:45:02