Java Maven settings.xml中私有仓库配置详解
作者:BJT 发布时间:2022-02-19 15:36:50
Maven setting中私有仓库配置浅析
最近遇到过不少这样那样的问题,曾经做过maven的分享,但是发现当时部分内容还是太想当然了,下面经过尝试后简单总结下:
首先几个逻辑:
pom>启用的profile>maven原有配置
mirror配置mirrorOf和id匹配优先
简单maven配置
一般大家的配置(略去无关私有仓库配置)都是这样的
<mirrors>
<mirror>
<id>nexus</id>
<name>mvn.xxx.com</name>
<mirrorOf>central</mirrorOf>
<url>http://mvn.xxx.com/nexus/content/groups/t_repo_group/</url>
</mirror>
</mirrors>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://mvn.xxx.com/nexus/content/groups/t_repo_group/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>alibaba</id>
<url>http://code.alibabatech.com/mvn/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://mvn.xxx.com/nexus/content/groups/t_repo_group/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
mirrors
这个标签重要的属性包括id、mirrorOf。id用来唯一区分。mirrorOf用来关联repository。
url用来表示 * 地址。
mirrorOf常见大家配置成*、central、repo啥的。这里刚才提到了是用来关联respository的,等提到下面<respository>标签的时候在解释。
profile
这个就简单说下吧,就是算是个配置,可以配多个,具体哪个生效可以通过mvn命令指定,或者配置<activeProfiles>
repositories
这里面算是配置的重点
<repository>
<id>alibaba</id>
<url>http://code.alibabatech.com/mvn/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
几个重要的配置,一目了然吧,id标识,url地址,是否从该仓库下release,是否从该仓库下快照版本。
这里就有人会懵逼了,这里怎么又配了个地址,跟mirrors里面的地址哪个生效呢?
好的,那咱们试试。先规定一下配置:
<mirrors>
<mirror>
<id>nexus</id>
<name>mvn.ws.netease.com</name>
<mirrorOf>central</mirrorOf>
<url>http://mvn.xxx.com/nexus/content/groups/t_repo_group/</url>
</mirror>
</mirrors>
<repositories>
<repository>
<id>nexus</id>
<url>http://mvn.ccc.com/nexus/content/groups/t_repo_group/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
把地址区分下,mirror里配成xxx,repository配成ccc
随便找一个项目,设定一个不存在的依赖,mvn -U compile下:
可以发现去ccc找了。说明repository里的生效了。
那么mirror里的地址什么时候生效呢?其实刚才说了,mirror里的是靠mirrorOf中的内容和repository中id关联的。比如我们把刚才配置改为
<mirrors>
<mirror>
<id>nexus</id>
<name>mvn.ws.netease.com</name>
<mirrorOf>central</mirrorOf>
<url>http://mvn.xxx.com/nexus/content/groups/t_repo_group/</url>
</mirror>
</mirrors>
<repositories>
<repository>
<id>central</id>
<url>http://mvn.ccc.com/nexus/content/groups/t_repo_group/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
把repository中的id改成central
这样就行了。此外mirrorOf中可以配置通配符,例如*,表示任何repository都和这个关联。
其实简单来说就是如果repository的id能和mirrorOf关联上,那么url以mirror的为准,否则以repository中自己的url为准。
其他还有一些点,repositories中可以配置多个repository,配置多个话,一个找不到会找下一个,比如我们在刚才基础上加上阿里的配置
<repositories>
<repository>
<id>nexus</id>
<url>http://mvn.ccc.com/nexus/content/groups/t_repo_group/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>alibaba</id>
<url>http://code.alibabatech.com/mvn/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
在构建一次:
当配置多个时,会逐一进行下载尝试。
来源:https://www.jianshu.com/p/b734f075a85a


猜你喜欢
- 用DataFormatString格式化GridView在 GridView里面显示数据,要显示的数据有好多位小数,就想让它只显示两位小数,
- Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册
- 对于java开发人员来说,Idea的普及率已经很高了。但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE
- 1.理解全过程1.1.概述需要具备的知识Socket网络编程反向代理的理解平滑加权轮询算法的理解线程池的理解目的:实现Socket 集群服务
- 本文实例为大家分享了Android实现ViewPager无限循环的具体代码,供大家参考,具体内容如下方式一:实现原理:假设有3张图片,分别是
- 目录1.前言2.不同进制的特点3.进制之间的转换3.1 二进制转十进制:3.2 十进制转二进制:3.3 二进制转八进制:3.4 十六进制转二
- 要用TextView使用渐变色,那我们就必须要了解LinearGradient(线性渐变)的用法。LinearGradient的参数解释Li
- 1. 异常处理概述空指针引用 NPE 是编程语言最常见的异常,数十年来无处不在的和程序打交道,在Java中,我们使用“防
- Android移动开发实现简单计算器功能,供大家参考,具体内容如下前言android 开发小实验android 移动开发实现 简易计算器功能
- 一、在drawable下面添加xml文件rounded_editview.xml<?xml version="1.0&quo
- 今天给大家介绍下用Java swing开发一款音乐播放器, * 酷狗音乐播放器,完整源码地址在最下方,本文只列出部分源码,因为源码很多,全部贴
- 本文主要介绍android应用android系统中剪切板进行数据的传递,首先讲解的是传递简单数据,然后讲解传递对象类型的数据。所有实例均在a
- 为什么要自定义缓存注解?Spring Cache本身提供@Cacheable、@CacheEvict、@CachePut等缓存注解,为什么还
- 本文为大家分享了java多线程的简单实现及线程池实例,供大家参考,具体内容如下一、多线程的两种实现方式1、继承Thread类的多线程/**
- Zookeeper和Eureka哪个更好?1、CAP理论一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求C:数据一致性
- Android 列表选择框 Spinner详解及实例Spinner 是 Android 的列表选择框,不过 spinner 并不需要显示下拉
- 合理的使用规则引擎可以极大的减少代码复杂度,提升代码可维护性。业界知名的开源规则引擎有Drools,功能丰富,但也比较庞大。在一些简单的场景
- 本文实例讲述了Android EditText限制输入字数的方法。分享给大家供大家参考,具体如下://新浪微博字数限制private sta
- 话不多说,下面来直接看示例代码具体代码:DayOfWeek4Birthday.javapackage com.gua;import java
- 个人觉得eclipse提示较少,所以今天就写了这篇文章。使用Intellij IDEA 2018实现Hello,World的时候我遇到了一些