背景
最近在修hive-1.2.0的一个bug,需要修改后重新打包部署到集群,打包的时候报下面的错误,原因很简单,从远程仓库里面已经拉不到这个包了。
org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde was not found in http://www.datanucleus.org/downloads/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of datanucleus has elapsed or updates are forced
原因分析
去https://mvnrepository.com/检索org.pentaho:pentaho-aggdesigner-algorithm
提示在该包是在https://repo.spring.io/plugins-release/
托管的,实际该包已经从https://repo.spring.io/plugins-release/
移除。
解决方法
方法一
实际还没解决!!!,本地仓库有了还是会去远端仓库拉,奇怪!
简单暴力,也没有什么花里胡哨的东西,使用最直接的方式解决!
下载需要的jar包直接打到本地仓库
- 需要的jar包自行在网上把包下载下来,推荐 > https://mvnrepository.com/
- 编写maven install 命令
mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=D:\pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
- 执行maven install命令,在本地仓库部署依赖的包
- 在项目中重新编译
方法二
用该方法解决!!!
国内阿里的依赖包托管仓库(https://developer.aliyun.com/mvn/search
)包比较全,好多已经从官方删除的依赖包这里都能够找得到,阿里整合的各家的库也都是独立分库的,找需要包的时候需要注意我们需要的包在哪个对应的仓库下。
比如我们需要的org.pentaho:pentaho-aggdesigner-algorithm
在spring
和spring-plugin
2个仓库下都有,我们只需要在本地maven配置setting.xml
中添加2个仓库镜像地址中的一个就可以了,我添加的是spring
的,如下
<mirror>
<id>aliyunmaven-spring</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
hive编译有很多依赖包不在spring
的仓库内的,我们首先依赖库放第一位的是中央库(center),然后才是spring的仓库。最终的maven依赖配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\repo</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
<mirror>
<id>aliyunmaven-central</id>
<mirrorOf>central</mirrorOf>
<name>阿里云central仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>aliyunmaven-spring</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
配置好后,执行hive编译打包命令即可。
mvn clean package -DskipTests -Phadoop-2 -Pdist
参考文档
https://www.cnblogs.com/youchi/p/13600153.html