Jenkins执行maven install报cucumber ParameterTypeRegistry类加载错误
测试
运行StepDefinitions.testRunnerTest
测试执行数:1,失败数:0,错误数:1,跳过数:0,耗时:0.003 sec <<< 执行失败!所属用例:StepDefinitions.testRunnerTest
StepDefinitions.testRunnerTest 耗时:0.002 sec <<< 执行错误!java.lang.NoClassDefFoundError: io/cucumber/cucumberexpressions/ParameterTypeRegistry
问题根因
该报错属于运行时类缺失问题,核心是Cucumber相关依赖异常,常见触发场景如下:
- 项目内多个Cucumber组件版本不匹配,存在版本冲突
- Maven依赖传递未自动引入
cucumber-expressions组件,导致类加载失败 - Jenkins节点的Maven本地仓库中Cucumber相关依赖包损坏
修复步骤
1. 统一锁定Cucumber全组件版本
在项目pom.xml的<dependencyManagement>节点导入Cucumber官方bom,避免不同组件版本不一致:
<dependencyManagement> <dependencies> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-bom</artifactId> <version>7.14.0</version> <!-- 可替换为业务适配的稳定版本 --> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
后续引入cucumber-core、cucumber-java、cucumber-junit等依赖时无需单独指定版本,自动和bom版本保持一致。
2. 手动补全缺失依赖
如果使用的Cucumber低版本未内置cucumber-expressions组件,手动添加对应版本的依赖:
<dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-expressions</artifactId> <version>与Cucumber整体版本保持一致</version> <scope>test</scope> </dependency>
3. 清理Jenkins环境缓存
修改Jenkins构建命令,添加强制更新依赖参数:mvn clean install -U
如果仍报错,登录Jenkins对应执行节点,删除Maven本地仓库下io/cucumber目录的所有文件,重新触发构建即可。
内容的提问来源于stack exchange,提问作者Rakesh Sambargi
相关产品推荐
相关产品推荐

