1. 下载 Nexus 3.x
nexus 官方下载地址:https://www.sonatype.com/nexus/repository-oss/download
2. linux 环境下安装(nexus 3.x 需要 java 1.8 环境)
解压命令
tar -zxvf nexus-3.28.0-01-unix.tar.gz
3. 启动前配置
- etc 目录下的 nexus-default.properties
如图,可配置启动端口,默认 8081,如端口被占用可编辑此文件修改 - bin 目录下 nexus.vmoptions如图,Xms,Xmx 等 jvm 相关参数在此文件配置,如有需要可编辑此文件修改
- Nexus 启动相关命令
在 Nexus 解压后的目录下执行以下命令启动
./bin/nexus start
启动 Nexus
./bin/nexus stop
停止 Nexus
./bin/nexus status
查看 Nexus 运行状态
./bin/nexus restart
重启 Nexus
在用 root 用户启动 Nexus 时会出现如下警告,虽然不会影响启动,但强迫症看着总是不太舒服。Nexus 不推荐使用 root 用户启动 Nexus,网上找到的大部分的解决方案都是新建一个用户来启动 Nexus,这里介绍找到的另外一种解决方案:bin 目录下的 nexus 是 Nexus 程序的启动脚本,通过修改 nexus 启动脚本,可以直接去除该警告,眼不见心不烦。
输入vi bin/nexus
编辑 nexus 启动脚本,如图,然后输入/root
按回车键找到run_as_root=true
的配置
输入i
进入 vi 的编辑模式,将true
改为false
,然后按esc
键,输入:wq
回车保存编辑后的内容,重新启动 nexus 则不会再出现上述警告。
4. 启动后配置
- 修改 admin 默认密码
Nexus 默认地址是 http://127.0.0.1:8081 将 ip 跟端口替换成你自己的配置,在浏览器上打开,点击Sign In
,第一次启动登录时需要设置 admin 账户的密码,如图,它给出了默认密码的位置,找到该密码登录后即可设置 admin 账户的密码。
设置密码后会有一个提示,是否开启匿名访问,也就是是否不用登录就可以查看仓库里的文件,为了安全着想,可以选否,随意,后面也可以再改。 - 配置仓库
成功登录后可以看到如下界面,开始配置仓库。
1)默认仓库:
maven-central
代理的中央仓库,仓库类型 proxy
maven-releases
自用的 releases 版本仓库,仓库类型 hosted
maven-snapshots
自用的 snapshots 版本仓库,仓库类型 hosted
maven-public
上述几个仓库的集合,仓库类型 public
上述三种仓库类型:proxy
顾名思义就是代理仓库,当需要时会从其他公共仓库中下载并缓存构件;hosted
网上翻译为 ‘宿主’ 仓库,可以简单理解为就是自用的仓库;public
仓库组,就是几个仓库的集合,将几个仓库聚合后使用一个 url 对外提供服务。
2)新增仓库:
由于 maven 默认的中央仓库在国内网速并不理想,所以通常会使用 aliyun 的镜像仓库作为新的代理仓库:https://maven.aliyun.com/nexus/content/groups/public/
点击 Create repository 选择 maven2(proxy) 新建 aliyun 代理仓库
配置 aliyun 仓库代理地址
另外之前的仓库列表截图中还有一个新增的 3rd-party 仓库,这个仓库的定义是存储一些无法从公共仓库中下载的第三方构件,仓库类型为 hosted,可根据需求自行创建。
创建仓库后,需要把新的仓库添加到maven-pulic
,通过maven-public
对外提供一致的服务,找到如下配置,将 aliyun 移动到右边,并配置到最上面,使其优先级最高。
重要:打开 maven-release 仓库,找到下图中的 Deployment policy
,将默认的 Disable redeploy
改为 Allow redeploy
,这个配置的意思是,是否允许重复发布构件,如果没有修改这个配置,当需要发布新的构件去覆盖老的构件时,操作会被禁止,检查下所有的 hosted 类型的仓库是否都修改了这个配置。
3. 新建角色权限及用户
在实际的使用过程中,admin
账户是不会开放给所有人的,因此需要给不同的用户配置不同的权限。Nexus 的用户权限是通过角色来赋予的,因此新建一个 nexus-dev
的角色
如上是已经配置好的角色,权限分为两类 view
跟 admin
分别对应最上面的两个页面视图,开发用户只需要关心 view 权限即可;browse
代表页面上的浏览权限,其他 add
、read
之类不再赘述,顾名思义。经过不停的权限分配尝试,正常需要的权限:browse
read
add
edit
,其中 edit
是 hosted 类型仓库需要配置的,代理仓库不需要此权限。新建一个 nexus-dev
的用户并赋予其 nexus-dev
的角色,这个简单的就不说了。至此,nexus 配置完毕了。
5. 验证 nexus 是否可用
- maven 的 setting 文件配置