如何升级Maven项目pom中第三方依赖Jar内置的log4j版本?
Maven项目统一升级log4j版本(覆盖jericho关联低版本log4j)配置方案
要实现全项目所有直接、传递依赖关联的log4j统一升级到2.17.1,同时覆盖jericho 3.4内置的低版本log4j-api,按以下步骤配置pom.xml即可:
- 第一步:升级jericho依赖到3.4版本,同时排除其自带的低版本log4j-api,以及旧版jericho 3.3引入的log4j 1.x传递依赖,避免漏洞包残留
<dependencies> <dependency> <groupId>net.htmlparser.jericho</groupId> <artifactId>jericho-html</artifactId> <version>3.4</version> <exclusions> <!-- 排除jericho内置的2.4版本log4j-api --> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </exclusion> <!-- 排除log4j 1.x原生漏洞包 --> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
- 第二步:在pom.xml中添加
<dependencyManagement>节点,统一锁定所有log4j相关组件的版本为2.17.1。该配置会强制全项目所有位置引用的log4j组件都使用指定版本,无需逐个第三方依赖做排除配置,是Maven项目统一依赖版本的标准方案
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.17.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.1</version> </dependency> <!-- 若项目中存在依赖log4j 1.x接口的代码,引入官方桥接包做兼容,不要引入log4j 1.x原生包 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.17.1</version> </dependency> </dependencies> </dependencyManagement>
- 第三步:配置完成后执行验证命令,确认依赖版本符合预期
在项目根目录执行以下命令查看依赖树:mvn dependency:tree | grep log4j
输出结果中所有log4j相关组件的版本均为2.17.1,没有1.2.17、2.4等旧版本残留即为配置成功。
注意:如果项目是多模块结构,把上述配置放在父pom的dependencyManagement中即可,所有子模块会自动继承版本规则,无需重复配置。
内容的提问来源于stack exchange,提问作者Sudipto Saha
相关产品推荐
相关产品推荐

