Maven 私服搭建及使用详解
前言
- 私服的搭建一般是在 Linux 环境,如果对 Linux 一窍不通可以查看我其它的博文,其中有 Linux 安装,及命令快速入门,作为一个开发者对 Linux 还是需要一定的了解。
- 如果你不想,也可以使用 windows 版本的 nexus 搭建私服,具体不做概述。
- 如果搭建后启动后,无法访问,可以查看防火墙问题(自己测试可直接关闭返防火墙),参考Linux防火墙:https://www.cnblogs.com/moxiaoan/p/5683743.html
- 安装包百度云链接: https://pan.baidu.com/s/1Yv6Lnj0DBA-I3Qz_gx86yw 提取码: nc9w
1、私服的作用及安装
1.1、 jdk 安装
nexus 是基于 jkd 运行,首先安装 jdk;
# 1、下载 jdk 1.8,如果下载有问题请访问上面的百度云
[root@localhost home]# wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz
# 解压
[root@localhost home]# mkdir /usr/local/jdk
[root@localhost home]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/jdk/
# 配置环境变量,在其尾部添加如下内容
[root@localhost home]# vim /etc/profile
JAVA_HOME=/usr/local/jdk/jdk1.8.0_221
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
[root@localhost jdk1.8.0_221]# source /etc/profile # 重新加载
[root@localhost jdk1.8.0_221]# javac # 直接测试,看是否打印
1.2、源码安装方式搭建
因 nexus 比较消耗资源,Linux 环境需要提供至少2G以上内存。
# 此下载要爬墙
# yum install wget
[root@localhost home]# wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.15.2-01-unix.tar.gz
# 解压
[root@localhost home]# mkdir nexus
[root@localhost home]# tar -zxvf nexus-3.15.2-01-unix.tar.gz -C nexus
# 设置运行用户root
[root@localhost home]# cd nexus/nexus-3.15.2-01/
[root@localhost nexus-3.15.2-01]# vi bin/nexus.rc
run_as_user="root"
~
# 启动 nexus 服务
[root@localhost nexus-3.15.2-01]# bin/nexus start
# 关闭 nexus 服务
[root@localhost nexus-3.15.2-01]# bin/nexus stop
# 服务启动成功,浏览器访问虚拟机地址即可
http://192.168.1.153:8081/
1.3、docker方式安装
# 可能没有安装docker环境,Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上
# 1、yum 安装
[root@localhost home]# yum -y install docker
# 2、检查docker是否安装成功
[root@localhost home]# docker version
# docker默认的源为国外官方源,下载速度较慢,可改为国内,加速、
[root@localhost home]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
===================== docker 基本命令补充 =======================
# 3、启动 docker服务
[root@localhost home]# systemctl start docker
# 4、关闭 docker服务
[root@localhost home]# systemctl stop docker
# 5、重启 docker服务
[root@localhost home]# systemctl restart docker
[root@localhost home]# docker images # 查询安装的
[root@localhost home]# docker ps # 正在运行的
[root@localhost home]# docker ps -a # 正在运行的,未运行的
# 1、创建一个持久目录,存放nexus数据
[root@localhost home]# mkdir /nexus-data
# 2、此处200对应容器内nexus用户的id,指定用户
[root@localhost home]# chown 200 /nexus-data
# 3、2、docker命令直接启动(网速慢的建议先 docker pull sonatype/nexus3)
# 查找 docker 镜像
[root@localhost home]# docker search nexus3
[root@localhost docker]# docker pull docker.io/sonatype/nexus3
# --privileged=true,容器权限提升 root
# nexus-data,挂载宿主机目录
[root@localhost docker]# docker run -d --name nexus --privileged=true -p 8081:8081 -v /nexus-data:/nexus-data sonatype/nexus3
# 查看发现启动成功
[root@localhost docker]# docker ps
# 服务启动成功,浏览器访问虚拟机地址即可
http://192.168.1.153:8081/
# 补充命令:查看当前所有镜像,包括已退出的
[root@localhost ~]# docker ps -a
# 指定他的 CONTAINER ID 值启动对应的工具
[root@localhost ~]# docker start 30fe327e4201
2、nexus 界面详解
-
输入自己的 nexus 登录地址:http://192.168.1.153:8081/
-
右上角 Sign in 登录,账号:admin, 密码:admin123
-
搜索功能,可按搜索指定 jar 包
-
Nexus的仓库类型
Type 类型对应:
proxy(代理类型):代理一个远程仓库url,缓存一份打此经过的 jar 。
group(仓库组类型–门面):组合自己的多个库,成为一个路径对外提供服务;
hosted(宿主类型):内部项目的发布仓库,内部 jar 存在在这;
-
配置国内代理加速
因maven中央仓库速度慢,我们一般优先使用国内远程仓库,这里配一个 aliyun 代理,查看第4步图中,
点击 create repository 按钮,填写 name 与 remote storage 值。
-
调配 nexus 对外的门面
当外部请求 nexus下载 jar 时,nexus 统一对外部提供一个服务窗口。我们配置它对远程仓库的代理顺序。
编辑 maven-public 库(门面,统一访问),加入 aliyum 远程仓库,并调整顺序如下:
配置原因:
当查询构件时,会依次从上往下查 releases/ napshots/ aliyun/ central 这四个库
优先级:本地最优先,aliyun 次之,central 最末(因其速度最慢)
-
使用 nexus 拉取 jar 包,即是更改自己的 setting.xml 配置文件,使 maven 首先经过自己的搭建的私服下载 jar
<!--推荐全局配置,setting.xml 配置文件中添加--> <mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <!--自己配置的 aliyun 代理库地址,nexus上获取--> <url>http://192.168.0.2:8081/repository/aliyun/</url> </mirror> </mirrors> <!--单个项目配置,不推荐,pom.xml 中添加--> <project> <repositories> <repository> <id>nexus-enjoy</id> <name>enjoy public</name> <url>http://192.168.0.2:8081/repository/aliyun/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </project>
-
上传 jar 到 nexus
可以直接在 nexus 的界面上,使用 upload上传,但是整真正使用过程中,是不推荐的使用这种方式上传,推荐步骤 9 的打包上传方式。
-
推荐:命令上传
1、在 setting.xml 配置文件中,配置自己私服库的密码
<servers> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
2、要打包上传的项目的 pom.xml中配置,真正的项目应该配置在最顶层的父项目中
<projec> <distributionManagement> <repository> <!--对应setting.xml中配置的id,发布版本--> <id>releases</id> <name>Releases Deploy</name> <!--nexus 中本地发布版本的 url--> <url>http://192.168.0.2:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <!--快照版本--> <id>snapshots</id> <name>Snapshots Deploy</name> <url>http://192.168.0.2:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> </projec>
3、使用
mvn deploy
打包推送到远程仓库,就会推送到 nexus 私服了。4、查看是否推送成功,browse 下,点击自己推送配置的本地库 maven-releases,就能进入如下界面。
-
设置允许覆盖发布
maven 中,对于发布版本,一旦发布推送到服务器(确立是一个稳定的版本),所以是不能覆盖上传的,对于快照是可以修改上传,这些都是可以根据自身需要而配置的,配置界面如下: