大纲
本例子使用的是常见的nexus2.x版本 注意需要先安装JDK
Nexus 专业版是需要付费的,这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包
相关的nexus-2.14.5-02-bundle.zip 以上传到百度云盘
nexus2.x 下载地址 https://help.sonatype.com/repomanager2/release-notes/2022-release-notes
nexus3.x 下载地址 https://help.sonatype.com/repomanager3/product-information/download
解压完以后会得到两个目录:
可以修改nexus启动的端口,主要是修改 conf/nexus.properties
启动脚本保存在bin文件夹下 nexus命令, 此命令可以带多个参数 stop restart start等
如果是ROOT用户启动的话,会报错If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
需要修改nexus命令指定RUN_AS_USER=root
启动成功后访问 http://ip:端口/nexus 默认账号密码 admin /admin123
域名配置可以实现使用域名访问私库
点击server菜单 修改域名
保存后即可
右上角的下拉菜单,点击后选择profile 可以修改admin的账号密码
nexus安装完成后默认创建 Public Repositories组,我们在pom.xml配置中可以使用这个组,就可以拉取默认4个仓库的内容
例如创建一个 jim自定义组 这个组无法获取 3rd party库
分别访问
http://repositiry.neuxs.com/nexus/content/groups/jim/
http://repositiry.neuxs.com/nexus/content/groups/public/
可以看到自定义组 Jim Repositories没有三方库中的包
在项目pom.xml中可以添加repository (注意如果setting.xml中配置了mirror 则以下配置无效)
my-maven
my-maven
http://repositiry.neuxs.com/nexus/content/groups/jim/
default
always
true
updatePolicy可以配置仓库的更新策略 【always | daily | interval | never】
Nexus 2.x 默认创建了 6 个仓库,我们称它们为 Nexus 内置仓库:
仓库的策略:
每个仓库都具有一系列属性:
(1)hosted 类型的仓库,内部项目的发布仓库 此类仓库数据保存在安装nexus的集群上
(2)releases内部的模块中release模块的发布仓库
(3)snapshots发布内部的SNAPSHOT模块的仓库
(4)3rd party第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
(5)proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
(6)group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库
配置每个仓库的上传下载,是否可以部署等配置
例如创建一个Mytest 仓库类型为hosted(宿主仓库)
在项目pom.xml中可以添加repository即可使用Mytest ( 注意如果setting.xml中配置了mirror 则以下配置无效)
my-test
my-test
http://repositiry.neuxs.com/nexus/content/repositories/Mytest/
可以给自定义的仓库创建权限 例如:给Mytest库创建
创建完成后可以看到出现对Mytest库 CRUD权限
可以基于这些新建的权限创建角色
nexus默认创建了多种role用于管理仓库
例如:
UI:Basic UIPrivileges:让用户拥有访问Nexus界面必须的最基本的权限。
UI:Repository Browser:让用户拥有访问Nexus界面浏览仓库页面所需要的权限。
Repo:All Repositories (Read):给予用户读取所有仓库内容的权限。
没有仓库的读权限用户将无法在仓库页面看到实际的仓库内容,也无法使用Maven从仓库下载构件。
Repo:All Repositories (Full Control):给予用户完全控制所有仓库内容的权限。
用户不仅可以浏览、下载构件,还可以部署构件及删除仓库内容。
创建自定义角色test 只能对MyTest仓库进行操作
注意:如果要mvn deploy 必须要配置create update权限
可以创建用户,不同的用户可以有不同的操作权限
用户创建成功后可以在列表中查看用户信息,修改密码
使用新创建的用户liuyijiang登录,可以看到权限受到控制
日常开发过程中常用到mvn deploy将自身的项目发布到nexus上供其他人使用
实现mvn deploy前需要注意三个点
注意仓库策略配置
Repository Policy
Deployment Policy
Allow Redeploy 允许重复deploy
Allow Redeploy及同一个版本号可以重复提交,一般仓库策略是Snapshot(快照版)可以允许重复deploy
Disable Redeploy 禁止重复deploy
Disable Redeploy及同一个版本号不能重复提交,一般仓库策略是Release,使用禁止重复deploy
Read Only 禁止deploy
如果不匹配Repository策略和Deployment策略 deploy时会出现 status: 400 Bad Request错误
项目的pom.xml文件中需要添加配置,用于指定发布到哪个仓库
Mytest
http://repositiry.neuxs.com/nexus/content/repositories/Mytest/
需要在maven settings.xml配置文件加入拥有对应库操作权限的用户账号密码
注意: id 就是pom.xml文件中配置的id
注意:如果账号密码配置错误或账号没有权限 deploy时会出现 status: 403 Forbidden
可以给团队每个用户创建对应的账号,配合nexus的 System Feeds 功能查看最近的deploy是哪个用户什么时候发布的
配置通知邮箱
配置定时任务
常见的一些定时任务
Download Indexs:为代理仓库下载远程索引。
Empty Trash:清空Nexus的回收站,一些操作实际是将文件移到了回收站中。
Evict UnusedProxied Items From Repository Caches:删除代理仓库中长期未被使用的构件缓存。
Expire RepositoryCache:Nexus为代理仓库维护了远程仓库的信息以避免不必要的网络流量,该任务清空这些信息以强制Nexus去重新获取远程仓库的信息。
Publish Indexs:将仓库索引发布成可供m2eclipse和其他Nexus使用的格式。
Purge NexusTimeline:删除Nexus的时间线文件,该文件用于建立系统的RSS源。
Rebuild MavenMetadata Files:基于仓库内容重新创建仓库元数据文件maven-metadata.xml,同时重新创建每个文件的校验和md5与sha1。
ReIndexRepositories:为仓库编纂索引。
Remove SnapshotsFrom Repositories:以可配置的方式删除仓库的快照构件。
Synchronize ShadowRepository:同步虚拟仓库的内容(服务基于Maven1)。
可以在maven settings.xml 配置mirror
例如在setting.xml 配置了mirror 则优先使用此次的配置
nexus
*
Nexus
http://nexus.medcrab.com/content/groups/public/
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址,所以如果settings.xml 中配置了mirror那么项目中的pom.xml Repository配置无效
标签里面放置的是要被镜像的Repository ID
Maven还支持更高级的镜像配置:
*
匹配所有远程仓库。
repo1,repo2
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
*,!repo1
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。