使用Maven打包JEE项目时依赖解析失败求助
解决方案
1. 核心原因
Maven 3.8.1及以上版本默认启用maven-default-http-blocker拦截策略,禁止从HTTP协议的远程仓库拉取依赖。即便本地已有olap4j的jar包,Maven仍会尝试获取对应POM文件,而依赖链中的jasperreports、jaspersoft-third-party仓库均为HTTP协议,因此被拦截。
2. 具体解决步骤
修改Maven配置,替换为HTTPS仓库
找到本地Maven的conf/settings.xml(或用户目录.m2/settings.xml),添加HTTPS镜像替代原HTTP仓库:<mirrors> <mirror> <id>jasperreports-https</id> <mirrorOf>jasperreports</mirrorOf> <url>https://jasperreports.sourceforge.io/maven2/</url> </mirror> <mirror> <id>jaspersoft-third-party-https</id> <mirrorOf>jaspersoft-third-party</mirrorOf> <url>https://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url> </mirror> </mirrors>启用离线模式打包
执行打包命令时添加-o参数,强制Maven仅使用本地仓库,跳过远程仓库请求:mvn clean package -o检查本地仓库完整性
进入本地仓库的olap4j目录(如~/.m2/repository/org/olap4j/olap4j/0.9.7.309-JS-3/),确认是否存在olap4j-0.9.7.309-JS-3.pom文件。若缺失,可从可信HTTPS源手动下载该POM放入对应目录,或复制其他项目中完整的olap4j依赖文件。升级jasperreports依赖版本
旧版本jasperreports依赖的仓库为HTTP协议,升级到6.20.0及以上版本,该版本已适配HTTPS仓库:<dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.20.0</version> </dependency>
内容的提问来源于stack exchange,提问作者thomas
相关产品推荐
相关产品推荐

