Ambari 2.7.5编译ambari-metrics-timelineservice依赖解析失败求解
问题原因分析
你遇到的报错存在两个核心诱因:
- Maven 3.8.1及以上版本默认内置了
maven-default-http-blocker规则,禁止从HTTP协议的公共仓库拉取依赖,你用到的hwx-public、apache.snapshots仓库均为HTTP链接,因此被直接阻断访问。 - 依赖传递过程中拉取到了
org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT这个历史快照包,当前公有仓库已下线该版本,无法正常获取。
解决方案
按以下步骤操作即可解决问题:
- 调整Maven配置解除HTTP阻断或替换为HTTPS仓库地址
打开Maven安装路径下的conf/settings.xml文件,两种方案二选一:- 注释掉
maven-default-http-blocker相关的mirror配置 - 把用到的两个仓库地址替换为HTTPS协议版本:
hwx-public替换为https://repo.hortonworks.com/nexus/content/groups/public/apache.snapshots替换为https://repository.apache.org/snapshots
- 注释掉
- 强制指定正式版
javax.el依赖,避免拉取过期快照包
在apache-ambari-2.7.5-src/ambari-metrics/ambari-metrics-timelineservice/pom.xml的<dependencies>节点最顶部添加如下强制依赖配置:
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId> <version>3.0.1-b06</version> </dependency>
该正式版本与你拉取不到的快照版功能完全兼容,所有公共仓库都支持正常拉取。
- 清理历史编译缓存后重新执行编译
进入Ambari源码根目录执行命令:mvn clean install -DskipTests -Drat.numUnapprovedLicenses=100
如果仍存在依赖拉取过慢或失败的情况,可以额外在pom.xml的仓库配置中添加国内公共镜像仓库,覆盖绝大多数开源依赖。
内容的提问来源于stack exchange,提问作者sreekanth
相关产品推荐
相关产品推荐

