Pom.xml指定依赖无法覆盖AWS SDK传递的Netty依赖问题
解决方案
问题根源在于AWS SDK的依赖管理(如官方BOM)会锁定Netty的版本,直接添加Netty依赖无法覆盖传递依赖的版本,需要通过Maven的dependencyManagement来强制统一版本。以下是两种可行的解决方式:
方案一:通过Netty BOM统一版本
在pom.xml的<dependencyManagement>节点中导入Netty BOM,且确保它在AWS SDK BOM之后(若项目使用了AWS BOM),这样Netty BOM的版本会覆盖AWS BOM中指定的Netty版本:
<dependencyManagement> <!-- 若使用AWS SDK BOM,先导入它 --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.46.9</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 导入Netty BOM,放在AWS BOM之后以覆盖版本 --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-bom</artifactId> <version>4.1.133.Final</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement>
方案二:逐个指定Netty模块版本
若不想使用BOM,可在dependencyManagement中直接声明所有涉及的Netty模块版本(包括间接依赖的模块,避免旧版本残留):
<dependencyManagement> <dependencies> <!-- 核心漏洞模块 --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-handler</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport</artifactId> <version>4.1.133.Final</version> </dependency> <!-- 间接依赖的关联模块 --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec-http</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-codec-http2</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-common</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-buffer</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-unix-common</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-classes-epoll</artifactId> <version>4.1.133.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-resolver</artifactId> <version>4.1.133.Final</version> </dependency> </dependencies> </dependencyManagement>
验证
配置完成后,执行以下命令确认版本已更新:
mvn clean dependency:tree
注:若代码未直接依赖Netty类,无需在<dependencies>节点单独添加Netty依赖,dependencyManagement已足够强制传递依赖使用指定版本。
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

