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

Maven升级后site插件报错,如何排查并排除冲突依赖?

定位并解决commons-logging依赖冲突问题

碰到这种类加载层级冲突的问题,我通常会用下面几个方法来定位到底是哪个依赖引入了重复的org.apache.commons.logging.Log类:

1. 用Maven依赖树命令排查

最直接的方式是运行Maven的依赖树分析命令,它会帮你列出项目所有的直接依赖和传递依赖,包括每个依赖的版本:

mvn dependency:tree

如果输出太多,你可以加过滤参数只看commons-logging相关的依赖,这样更高效:

mvn dependency:tree -Dincludes=org.apache.commons.logging:commons-logging

执行后你会看到所有引入了commons-logging的依赖项,注意看不同的版本号——那些版本不一致的就是冲突的来源。

2. 用IDE的Maven插件可视化排查

如果你用IDEA或者Eclipse,可以借助Maven Helper类插件(IDEA自带类似功能,Eclipse需手动安装):

  • 打开项目的pom.xml,切换到“Dependency Analyzer”标签页
  • 在搜索框输入commons-logging,插件会高亮显示冲突的版本,并且明确标注是哪个父依赖引入了这个重复的jar
  • 找到冲突的依赖后,直接右键选择“Exclude”,插件会自动帮你在pom里添加排除规则

3. 用Debug日志追踪类加载路径

如果上面的方法还没找到问题,可以开启Maven的Debug模式运行site命令,查看类加载的详细日志:

mvn site site:deploy -X

在输出的日志里搜索org.apache.commons.logging.Log,你会看到JVM尝试加载这个类时的路径,里面会列出所有包含这个类的jar文件路径——这些路径对应的jar就是冲突的来源。

排除冲突依赖的示例

找到冲突的来源后,你需要在对应的依赖节点里添加排除规则,比如发现xxx:yyy依赖引入了多余的commons-logging版本,就这么写:

<dependency>
    <groupId>xxx</groupId>
    <artifactId>yyy</artifactId>
    <version>你的版本号</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.commons.logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

注意:优先保留与maven-site-plugin 3.7兼容的版本(通常插件自带的版本是适配Maven 3.5.3的),所以排除项目其他依赖引入的commons-logging会更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:13:33