Spring Boot引入Pentaho依赖构建失败找不到artifact如何解决
问题根因
构建报错的核心原因有两个:
- 配置的Pentaho仓库使用http协议,Maven 3.8.1及以上版本默认拦截所有非https的不安全仓库请求,根本没有访问Pentaho的私有仓库,转而向后配置的Spring里程碑仓库查找对应构件,自然找不到Pentaho的依赖。
- 配置的Pentaho依赖Maven坐标错误,所有Pentaho官方公开发布的构件groupId均以
org.pentaho为前缀,当前配置里的pentaho-reporting-engine、pentaho属于错误的groupId,即使仓库连通也无法拉取到正确构件。
解决步骤
- 修正Pentaho仓库配置
将原有http开头的Pentaho仓库地址替换为官方提供的https协议公开release仓库地址;如果暂时无法替换地址,可在repository配置中增加<allowInsecureProtocol>true</allowInsecureProtocol>标签,临时允许Maven访问该http仓库,生产环境更推荐使用https协议地址。
注意将Pentaho仓库放在repository列表最靠前的位置,Maven按配置顺序查找仓库,靠前配置可以减少不必要的仓库查找请求。 - 修正所有Pentaho依赖的坐标
所有Pentaho依赖的groupId调整为官方规范命名,示例修正后的依赖配置如下:
<!-- Pentaho 依赖 --> <dependency> <groupId>org.pentaho.reporting.engine</groupId> <artifactId>pentaho-reporting-engine-classic-core</artifactId> <version>7.0.0.6-95</version> </dependency> <dependency> <groupId>org.pentaho</groupId> <artifactId>pentaho-database-model</artifactId> <version>7.0.0.6-95</version> </dependency> <dependency> <groupId>org.pentaho.reporting.engine</groupId> <artifactId>pentaho-reporting-engine-classic-extensions</artifactId> <version>7.0.0.6-95</version> </dependency>
其余Pentaho相关依赖按照同样规则修正groupId即可,可通过Pentaho官方文档确认对应构件的准确groupId。
- 清理本地Maven坏缓存
进入本地Maven仓库存储目录,找到pentaho相关的文件夹,删除之前拉取失败生成的所有.lastUpdated后缀的残留文件,避免Maven读取失败缓存不再重新发起拉取请求。 - 检查Maven全局配置
打开本地Maven的settings.xml文件,检查是否配置了全局镜像规则拦截所有仓库请求,如果配置了全局镜像(比如内部私服、公共镜像源等),要么在镜像规则中排除Pentaho仓库的id,让Pentaho依赖的请求直接发到Pentaho官方仓库,要么将需要的Pentaho构件上传到你使用的私服仓库中。
构建验证
执行以下命令强制更新依赖并构建项目:mvn clean compile -U
如果还是提示找不到对应版本的构件,说明你配置的Pentaho仓库中不存在7.0.0.6-95这个版本的发布件,替换为仓库中实际存在的release版本号即可。
内容的提问来源于stack exchange,提问作者user3458271
相关产品推荐
相关产品推荐

