目录
2.关于Maven的Snapshot版本与Release版本
零、前置
持续集成 持续交付 | CI CD - Maven & Nexus3 部署
一、仓库介绍
1.仓库类型
- proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
- Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里,一般用来存放公司自己的jar包
- Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存,**当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可
maven-public:maven-central、maven-release和maven-snapshot三个库的合集
maven-release:用来存放release版本的jar包
maven-snapshot:用来存放snapshot版本的jar包
2.关于Maven的Snapshot版本与Release版本
1. Snapshot版本代表不稳定、尚处于开发中的版本
2. Release版本则代表稳定的版本
3. 什么情况下该用SNAPSHOT?
协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNAPSHOT来标识自己。这种做法的必要性可以反证如下:
a.如果B不用SNAPSHOT,而是每次更新后都使用一个稳定的版本,那版本号就会升得太快,每天一升e68a84e8a2ade79fa5e9819331333363396362甚至每个小时一升,这就是对版本号的滥用。
b.如果B不用SNAPSHOT, 但一直使用一个单一的Release版本号,那当B更新后,A可能并不会接受到更新。因为A所使用的repository一般不会频繁更新release版本的缓存(即本地repository),所以B以不换版本号的方式更新后,A在拿B时发现本地已有这个版本,就不会去远程Repository下载最新的B
4. 不用Release版本,在所有地方都用SNAPSHOT版本行不行?
不行。正式环境中不得使用snapshot版本的库。 比如说,今天你依赖某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的snapshot库。你再次构建时,Maven会去远程repository下载snapshot的最新版本,你构建时用的库就是新的jar文件了,这时正确性就很难保证了
二、向Nexus3私服上传jar包
1.创建库
点击 Create repository :
选择 maven2(hosted) ,信息填写如下:
点击 maven-public :
把它添加到右侧后点击 save :
至此,创建仓库完成。
2.创建管理账户
创建账户
进去根据自己需求填写即可。
重新登录
点击右上角的登出,然后使用刚刚创建的账户进行登录:
3.上传jar包
添加好jar包后填写一下相关信息,最后点击 Upload :
上传成功: