Java|Java Maven settings.xml中私有仓库配置详解
目录
- Maven setting中私有仓库配置浅析
- 简单maven配置
- mirrors
- profile
- repositories
- 总结
Maven setting中私有仓库配置浅析 最近遇到过不少这样那样的问题,曾经做过maven的分享,但是发现当时部分内容还是太想当然了,下面经过尝试后简单总结下:
首先几个逻辑:
- pom>启用的profile>maven原有配置
- mirror配置mirrorOf和id匹配优先
简单maven配置 一般大家的配置(略去无关私有仓库配置)都是这样的
nexus mvn.xxx.com central http://mvn.xxx.com/nexus/content/groups/t_repo_group/ dev nexus http://mvn.xxx.com/nexus/content/groups/t_repo_group/ true true alibaba http://code.alibabatech.com/mvn/releases/ true false nexus http://mvn.xxx.com/nexus/content/groups/t_repo_group/ true true dev
mirrors
这个标签重要的属性包括id、mirrorOf。id用来唯一区分。mirrorOf用来关联repository。
url用来表示私服地址。
mirrorOf常见大家配置成*、central、repo啥的。这里刚才提到了是用来关联respository的,等提到下面
profile
这个就简单说下吧,就是算是个配置,可以配多个,具体哪个生效可以通过mvn命令指定,或者配置
repositories
这里面算是配置的重点
alibaba http://code.alibabatech.com/mvn/releases/ true false
几个重要的配置,一目了然吧,id标识,url地址,是否从该仓库下release,是否从该仓库下快照版本。
这里就有人会懵逼了,这里怎么又配了个地址,跟mirrors里面的地址哪个生效呢?
好的,那咱们试试。先规定一下配置:
nexus mvn.ws.netease.com central http://mvn.xxx.com/nexus/content/groups/t_repo_group/ nexus http://mvn.ccc.com/nexus/content/groups/t_repo_group/ true true
把地址区分下,mirror里配成xxx,repository配成ccc
随便找一个项目,设定一个不存在的依赖,mvn -U compile下:
文章图片
可以发现去ccc找了。说明repository里的生效了。
那么mirror里的地址什么时候生效呢?其实刚才说了,mirror里的是靠mirrorOf中的内容和repository中id关联的。比如我们把刚才配置改为
nexus mvn.ws.netease.com central http://mvn.xxx.com/nexus/content/groups/t_repo_group/ central http://mvn.ccc.com/nexus/content/groups/t_repo_group/ true true
把repository中的id改成central
文章图片
这样就行了。此外mirrorOf中可以配置通配符,例如*,表示任何repository都和这个关联。
其实简单来说就是如果repository的id能和mirrorOf关联上,那么url以mirror的为准,否则以repository中自己的url为准。
其他还有一些点,repositories中可以配置多个repository,配置多个话,一个找不到会找下一个,比如我们在刚才基础上加上阿里的配置
nexus http://mvn.ccc.com/nexus/content/groups/t_repo_group/ true true alibaba http://code.alibabatech.com/mvn/releases/ true false
在构建一次:
文章图片
当配置多个时,会逐一进行下载尝试。
总结 咱们在回顾下起初的配置,可以看到启用的profile是dev,dev中的repository的id是nexus,跟mirrorOf没有匹配,那么生效的配置就是repository中自己的url配置,所以这里完全可以省略掉mirror的配置。当然如果多个profile公用一个私服地址,也可以指定mirror地址,然后repository中的id指定成和mirrorOf相同,同时可以省略掉自己标签中url。?
此外还有几个点要说,pluginRepositories,配置信息基本和repository一致,不过这个地址是用来下maven的插件的,就是pom中这样的配置
maven-war-plugin2.6 true ${basedir}/src/main/webapp/WEB-INF true WEB-INF **
还有,pom也可以指定repository:
文章图片
这样配置会和settings.xml中生效的配置合并,并优先从这个库找,找不到继续走settings.xml配置。
【Java|Java Maven settings.xml中私有仓库配置详解】本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用
- Java基础-高级特性-枚举实现状态机