Maven仓库优先级以及失败机制分析

Maven对后端开发的人员来说并不陌生,但多数情况下也仅仅只是配置了镜像地址用来下载依赖包。真正遇到难解的问题,还是得要稍微深入理解一些知识例如POM、坐标、仓库、生命周期等原理,这里推荐《Maven实战》这本书,虽然很老但是很经典。

今天想总结一下仓库的优先级和失败机制的问题,启发内容来自于这篇博客:Maven仓库理解和优先级,作者的核心观点大致如下:

本地仓库 > 私服 (profile)> 远程仓库(repository)和 镜像 (mirror) > 中央仓库 (central)

镜像是一个特殊的配置,其实镜像等同与远程仓库,没有匹配远程仓库的镜像就毫无作用。所以 maven 仓库真正的优先级为:

            本地仓库 > 私服(profile)> 远程仓库(repository)


接下来,通过实战进行验证和理解:

1、初始化Maven项目

首先,有两个点需要提出:

  • IDEA中的maven-reimport指令,默认使用的是用户级别的settings.xml配置,但是只在background tasks中执行,报错信息不明显,因此不推荐;而命令行中以mvn执行的指令,默认使用全局的settings.xml配置,可以通过在conf文件夹下的m2.conf文件中进行配置。

  • 因此,一般是推荐全局配置和用户配置保持一致,或者IDEA调整User Settings file的配置,本文采用后者(根据实际情况判断,也有可能因为配置了环境变量等原因,命令行默认使用用户配置)。

settings.xml中内容如下,没有配置镜像中央仓库,但是配置了私服(jdk1.7-Mac下使用Nexus搭建Maven私服,jdk-1.8-Mac安装配置nexus3.0):

<?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">
  <pluginGroups></pluginGroups>
  <proxies></proxies>
  <servers></servers>
  <mirrors></mirrors>
  <profiles>
    <profile>
      <id>mymaven</id>
      <repositories>
        <repository>
          <id>nexus maven</id>
          <url>http://localhost:8081/repository/maven-public/&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值