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

Jenkins构建Maven项目报错缺失org/apache/commons/lang3/ArrayUtils类

根因分析

这个报错本质是Maven插件类加载隔离+插件本身依赖声明缺失导致的:

  1. Maven执行插件时使用独立的SelfFirstStrategy类加载器,和项目本身的依赖类路径完全隔离——你在项目<dependencies>节点下声明的commons-lang3是供业务/测试代码使用的,插件运行时读不到这个包。
  2. 从错误日志打印的插件类路径可以看到,maven-cucumber-reporting:5.7.0运行时只加载了3个jar包,没有commons-lang3:这是该版本插件的已知bug,它内部调用了org.apache.commons.lang3.ArrayUtils类,却没有在插件自身的POM中声明对commons-lang3的依赖,导致Maven拉取插件时不会自动下载这个依赖包。
  3. 本地环境运行正常是因为本地Maven缓存中存在其他插件引入的commons-lang3包,类加载时碰巧能命中;Jenkins环境的Maven仓库缓存更干净,类路径下找不到对应类就直接报错。
  4. 执行mvn dependency:tree看不到commons-lang3和插件的关联是正常的:这个命令默认只解析项目主代码/测试代码的依赖树,不会包含Maven插件自身的依赖。
修复方案

二选一即可:

  • 方案1(推荐):直接升级插件版本,5.7.1及以上版本官方已经修复了这个依赖遗漏问题,只需要修改properties中的版本号:
<maven-cucumber-reporting.version>5.7.1</maven-cucumber-reporting.version>
  • 方案2:如果暂时不能升级插件版本,就在插件声明节点下显式补加commons-lang3依赖,强制插件加载这个包:
<plugin>
    <groupId>net.masterthought</groupId>
    <artifactId>maven-cucumber-reporting</artifactId>
    <version>${maven-cucumber-reporting.version}</version>
    <!-- 新增以下依赖配置 -->
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
    </dependencies>
    <executions>
        <!-- 原有executions配置保持不变 -->
    </executions>
</plugin>

修改完成后,在Jenkins构建步骤中先执行mvn dependency:resolve-plugins确认所有插件依赖拉取完整,再执行原构建命令即可恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:45:48