2、maven寻找jai包顺序

1、介绍

在工程的pom.xml中写了那么多<depedency></depedency>依赖,那么maven是如何去找到这些jar提供给工程使用的呢?

查找jar的方式

<dependency>
    <groupId>kettle.org.ftp4che</groupId>
    <artifactId>ftp4che</artifactId>
    <version>0.7.1</version>
</dependency>

就得从repository下开始找-> kettle -> org -> ftp4che -> ftp4che -> 0.7.1

也就是将groupId 、vrtifactId和version拼接起来

2、查找顺序

  • 1、本地仓库

  • 2、maven_home/conf/settings.xml 中的profiles

    注意:通常配置公司私服,或者阿里云等第三方镜像

  • 3、工程的pom.xml文件配置的repositories。

    注意:通常是本工程才需要的一些第三方公司仓库,比如kettle

    如果上面有这个repositories,那么就不会在找这个

  • 4、maven_home/conf/settings.xml 中的mirrors

    仓库的镜像,作为最后一层,<mirrorOf> XXX </mirrorOf>中XX一般设置为设置为central

    一般设置为阿里云即可

    如果<mirrorOf> XXX </mirrorOf>中,XXX设置了profiles的id,则profiles无效,会直接转向这个代理。

3、<mirrorOf> XXX </mirrorOf>规则如下:

  • 1、XXX 相同的,不管是自己定义的,还是*, 再或者是central,都只会使用第一个

  • 2、如果XXX设置了profiles的id,则profiles无效,会直接转向这个代理。

  • 3、central:是常用表示上面的任何仓库找不到,都去中央仓库repo.maven2也就是id为center里面找,所以profiles里面不要设置一个id为central的仓库。

  • 4、* :表示任何的jar包都会从这个镜像里面找,本地仓库也会跳过

4、配置经验:

  • 1、profiles中主要配置公司私服以及阿里云、163这些第三方镜像

  • 2、mirror是镜像,一般只需要设置一个central就可以了,建议使用阿里云作为中央仓库的镜像,速度很快

  • 3、pom.xml中的repositories中只配置本工程才需要的第三方私服,比如kettle

5、验证查找顺序的例子

第一种情况:各个配置位置无交叉,正常配置

运行结果

第二种情况:每种仓库设置两个==>morror。由于两个都是central,所以只有第一个生效

运行结果:

第三种情况:mirrorOf是profiles的 ==> 对应的profiles仓库不访问,直接访问mirror

运行结果:

转载于:https://my.oschina.net/liufukin/blog/2221421

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值