Maven项目中引入CDH jar包

我们使用maven时,一般会将中央仓库配置为阿里云的镜像,但是项目中用到的CDH相关的jar包并不存在于该中央仓库中。
1、CDH的中央仓库
CDH提供了中央仓库,官方文档参考:https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh5_maven_repo.html
2、官方给了两种项目中使用cdh jar包的方式:一是将jar包下载下来,拷贝到项目目录;另外一个是修改pom文件,将CDH仓库加入到pom中:
在这里插入图片描述
3、上述步骤应当是可行的,但pom中修改只能对当前项目有效,要想以后本机所有项目都可以引用CDH依赖,需要修改maven的setting.xml文件可参考maven如何配置多个仓库
https://ifeve.com/mutils-repository/
https://www.cnblogs.com/30go/p/11160468.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成后就可以在项目的pom中直接引用cdh的jar包了。
4、对于每个jar包如何引用,CDH官方也给出了各个版本的CDH对应jar包的groupid和artifactId
在这里插入图片描述
在这里插入图片描述

2020-2-20============
上述步骤应当是可行的,但是编译时一直报:Remote host closed connection during handshake: SSL peer shut down incorrectly,意思就是远程主机在握手期间将连接关闭了,在网上搜了半天,都说是网络问题导致的,解决方案就是多尝试几次,或者把jar包下载下来,手动安装到maven仓库中。但是尝试好多次,一直都报上面的错误。

解决方案:
1、maven提供了systemPath标签,官方给的解释如下
在这里插入图片描述
当使用systemPath时,scope必须是system,关于scope的分类,如下:
1)compile 默认是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

2)test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit

3)runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已。在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSRXXX的实现,对应的API jar是compile,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动jar包就是一个很好的例子,一般scope为runtime。 另runtime的依赖通常和optional搭配使用,optional为true。即可以用A实现也可以用B实现。

4)procided 意味着打包的时候可以不用包进去,别的设施(web container)会提供。事实上该依赖理论上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude的动作。

5)system 和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合systemPath使用

当使用systemPath时,groupId和artifactId自定义取名,version为当前jar包版本(自定义),scope固定用system,systemPath中推荐使用环境变量或相对路径,systemPath中间写jar包全名称。
2、cdh jar包可以手动去装有cdh的机器拷贝。使用系统路径的方式,pom改写如下:
在这里插入图片描述
3、可以看到已经引入成功
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值