「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」
一、Nexus是什么
开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,为什么它总是和maven一起被提到呢?
Maven作为一个优秀的构建工具、依赖管理工具、项目信息管理工具,在进行依赖管理的时候,通过pom.xml里面的
1 | bash复制代码<dependency> |
来精准定位找到对应的Java类库。在这个过程当中我们需要从仓库去找到对应的jar包引入到我们的项目当中,由此我们解决了合作开发中依赖增多、版本不一致、版本冲突、依赖臃肿等问题。
Maven有本地仓库和远程仓库两种,当Maven根据坐标寻找构件时,它首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,或者需要查看是否有更新的构件版本,Maven会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。
说到此,相信大家也明白了,Nexus是一种远程仓库,也是私服的一种。
SNAPSHOT
快照版本,在 maven 中 SNAPSHOT 版本代表正式发布(release)的版本之前的开发版本,在 pom 中用 x.y-SNAPSHOT 表示。
RELEASE
发布版本,稳定版本,在 maven 中 RELEASE 代表着稳定的版本,unchange,不可改变的,在 maven 中 SNAPSHOT 与 RELEASE 版本在策略上是完全不同的方式,SNAPSHOT 会根据你的配置不同,频繁的从远程仓库更新到本地仓库;而 RELEASE 则只会在第一次下载到本地仓库,以后则会先直接从本地仓库中寻找。
二、使用Nexus3搭建maven私服
在网上找到几个参考:
Windows中使用Nexus3搭建maven私服
maven 私服 nexus3.x 搭建 与使用
Maven私服Nexus3.x环境构建操作记录
三、IDEA打包上传到Nexus3私服
1.配置 .m2 下的 settings.xml
首先,这个文件在系统盘当前设备登录用户的.m2文件下,加入认证机制
没有就去网上copy一个配置好的,自己配置容易出错
->settings.xml<-
1 | bash复制代码<servers> |
2.配置 IDEA 项目 下的 pom.xml
1 | bash复制代码 <distributionManagement> |
这里标签中的id对应第一条server中的id ,url取得值可以直接在这里写,也可以如下图中settings文件中的值,name可以自定义
->settings.xml<-
1 | bash复制代码<profile> |
同样,上面pom.xml改成如下格式
1 | bash复制代码<distributionManagement> |
3.配置上传地址,地址去私服中copy
1 | bash复制代码<profile> |
4.其他配置(可忽略)
比如配置阿里的镜像,映射阿里中央仓库(下载jar包快一点)
1 | bash复制代码<mirrors> |
配置本地仓库(无需联网使用jar包)
1 | bash复制代码<localRepository>E:\maven_repository</localRepository> |
5.settings.xml完整配置(来源网络,仅供参考)
1 | bash复制代码<?xml version="1.0" encoding="UTF-8"?> |
6.IDEA打包上传
使用idea打包,打包时会根据pom文件中version判断是快照版本还是发布版本,version中0.0.1-SNAPSHOT 带SNAPSHOT为快照版本,删掉SNAPSHOT为发布版本,上传到私服时根据version自动判断上传到哪个仓库
注意,打包时 项目的pom文件一定要把maven-plugin删除掉,不然打包完成后会生成BOOT-INF文件夹,会造成上传到私服后,配置依赖后能下载到jar包,但是使用时报包找不到错误
1 | bash复制代码 <version>1.1-SNAPSHOT</version> |
然后clean后deploy
看到BUILD SUCCESS的提示则为成功,可以在自己私服上查看
本文转载自: 掘金