Jenkins流水线执行JMeter测试时遇org.apache.jmeter:bom:5.4.1依赖缺失问题
问题描述
我有一个Jenkinsfile流水线,其中一个阶段用于运行JMeter测试并生成对应报告,该阶段代码如下:
stage('Run Non-Functional tests - Windows'){ when { expression { env.OS == 'BAT' }} steps { dir('') { bat 'gradlew.bat jmReport' } } }
对应的build.gradle配置如下:
import de.qualersoft.jmeter.gradleplugin.task.* dependencies { jmeterPlugin("kg.apc:jmeter-plugins-casutg:2.10") } plugins { id "de.qualersoft.jmeter" version "2.1.0" } tasks.register('jmRun',JMeterRunTask) { jmxFile.set("TestPlan.jmx") } tasks.register("jmReport",JMeterReportTask) { jmxFile.set("TestPlan.jmx") dependsOn("jmRun") deleteResults=true }
执行该流水线时触发错误:
Execution failed for task ':jmRun'. > Could not resolve all dependencies for configuration ':jmeterPlugin'. > Could not find org.apache.jmeter:bom:5.4.1. Required by: project : > Could not find org.apache.jmeter:bom:5.4.1. Required by: project : > org.apache.jmeter:ApacheJMeter_core:5.4.1 project : > org.apache.jmeter:ApacheJMeter_core:5.4.1 > org.apache.jmeter:jorphan:5.4.1
请问该问题产生的原因是什么?是否属于JMeter的Bug?
解答
原因
de.qualersoft.jmeter插件2.1.0版本默认依赖JMeter 5.4.1,但Apache JMeter从5.5版本才开始发布BOM(物料清单)文件,5.4.1版本根本没有对应的org.apache.jmeter:bom:5.4.1包,导致Gradle无法解析该依赖。- 插件的依赖配置逻辑存在缺陷:在引用低于5.5的JMeter版本时,错误地尝试引入仅在高版本才存在的BOM,触发依赖解析失败。
是否是JMeter的Bug?
不是JMeter本身的Bug。JMeter 5.4.1未提供BOM是该版本的特性限制,问题根源在于你使用的de.qualersoft.jmeter插件版本对JMeter旧版本的兼容性处理不足。
修复方案
有两种可行解决路径:
- 升级插件版本:将
de.qualersoft.jmeter插件升级到支持JMeter 5.5+的版本(如最新稳定版),插件会自动适配使用JMeter 5.5及以上版本的BOM,避免依赖缺失问题。 - 指定兼容的JMeter版本并调整配置:若需保留JMeter 5.4.1,需在
build.gradle中显式指定JMeter版本,并禁用插件的BOM自动引入逻辑,或者改用不依赖BOM的插件配置方式。
内容的提问来源于stack exchange,提问作者Fábio Pires
相关产品推荐
相关产品推荐

