执行mvn clean install时Restlet Maven依赖解析失败问题求助
maven-default-http-blocker 依赖阻塞问题 从你给出的错误信息来看,核心问题是Maven默认阻止了HTTP协议的仓库访问——这是Maven 3.8.1及以上版本引入的安全机制,用来避免不安全的HTTP请求。你的项目需要从http://maven.repository.redhat.com/ga/和http://repository.apache.org/snapshots这两个HTTP仓库拉取依赖,刚好被默认的maven-default-http-blocker拦截了。
下面是具体的解决步骤:
1. 优先切换到HTTPS仓库地址(推荐)
大部分主流Maven仓库都提供了HTTPS镜像,这是最安全的解决方案:
- Red Hat GA仓库的HTTPS地址:
https://maven.repository.redhat.com/ga/ - Apache Snapshots仓库的HTTPS地址:
https://repository.apache.org/snapshots
你需要修改项目的pom.xml或者全局settings.xml(路径一般是~/.m2/settings.xml或Maven安装目录下的conf/settings.xml)里的仓库配置,把原来的HTTP地址替换成HTTPS版本。
比如在pom.xml中修改仓库配置:
<repositories> <repository> <id>redhat-ga-repository</id> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>apache.snapshots</id> <url>https://repository.apache.org/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
2. 若必须使用HTTP,允许不安全协议(不推荐)
如果因为环境限制只能用HTTP,可以在仓库配置中添加allowInsecureProtocol=true参数,告诉Maven允许该HTTP仓库的访问:
<repositories> <repository> <id>redhat-ga-repository</id> <url>http://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <allowInsecureProtocol>true</allowInsecureProtocol> </repository> <!-- 对apache snapshots仓库做同样配置 --> </repositories>
或者在全局settings.xml的mirrors部分添加镜像,覆盖默认的blocker规则:
<mirrors> <mirror> <id>redhat-ga-mirror</id> <mirrorOf>redhat-ga-repository</mirrorOf> <url>http://maven.repository.redhat.com/ga/</url> <blocked>false</blocked> </mirror> <mirror> <id>apache-snapshots-mirror</id> <mirrorOf>apache.snapshots</mirrorOf> <url>http://repository.apache.org/snapshots</url> <blocked>false</blocked> </mirror> </mirrors>
3. 验证本地仓库依赖完整性
虽然你提到依赖已存在于本地M2仓库,但有可能对应的pom文件损坏或者版本不匹配。可以尝试删除本地仓库中org.restlet.jee相关的目录(路径大概是~/.m2/repository/org/restlet/jee/org.restlet/2.3.6/),然后重新执行mvn clean install,让Maven重新拉取完整的依赖文件。
内容的提问来源于stack exchange,提问作者Chennai Cheetah

