Nexus介绍

Nexus是Maven仓库管理器,如果你使用Maven .你可以Maven中央仓库下载所需要的构件(atact),但这通常不是一个好的做法 ,你应该在本地架设一个Maven仓库服务器 在代理远程仓库的同时维护本地仓库 ,以节省带宽和时间, Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST ,友好的U是个extjs的REST客户端, 它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。
Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。 对于Maven来说,仓库只有两种:本地仓库和远程仓库。
本地仓库就是我们在maven的setting.xml中配置的本地仓库地址。由于最原始的本地仓库是空的, Maven必须知道至少个可用的远程仓库,才能在执行Maven命令的时候下载到需要的构件。中央仓库是maven默认的远程仓库。
私服是架设在局域网的种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后.当Maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库.将构件下载到私服,再提供给本地仓库下载。

功能介绍

1.节省外网带宽。大量对于外部仓库的重复请求会消耗带宽,利用私服代理外部仓库,可以消除对外的重复构
件下载,降低带宽的压力。
2.加速Maven构建。加速Maven构建。不停地连接请求外部仓库+分的耗时, Maven在执行构建的时候不停地检查远程仓库的数据。利用私服, Maven只检查局域网的数据,提高构建的速度。
3.部署第三方构件。部署第三方构件。当某个构件无法从任何一个外部远程仓库获得。建立私服之后,便可以将这些构件部署到私服,供内部的Maven项目使用。
4.提高稳定性,增强控制。提高稳定性,增强控制。Maven构建高度依赖于远程仓库,因此,当网络不稳定的
时候, Maven构建也会变得不稳定,甚至无法构建。私服缓存了大量构建,即使暂时没有网络, Maven也可以正常的运行。
5.降低中央仓库的负荷。降低中央仓库的负荷。使用私服可以避免很多对中央仓库的重复下载,降低中央仓库的压力。

仓库类型说明默认仓库分类

group (仓库组类型) :又叫组仓库,用于方便开发人员,自己设定的仓库
hosted (宿主类型) :内部项目的发布仓库(内部开发人员发布上去存放的仓库)
proxy(代理类型) :从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值,即被代理的远程仓库的路径)
viual (虚拟类型) :虚拟仓库(这个基本上用不到)

使用私有仓库的优点

1)节省带宽
2)提高maven构建项目的速度
3)可以用来存储公司内部开发的依赖包和插件

服务器信息

IP 角色
172.16.1.12 Nexus
172.16.1.13 Maven

部署JDK

解压软件包

1
2
tar zxf jdk-8u201-linux-x64.tar.gz
mv /root/jdk1.8.0_201/ /usr/local/java

配置环境变量

1
2
3
4
5
vi /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

加载环境变量

1
source /etc/profile

部署Nexus

解压软件包

1
2
3
tar zxf nexus-3.14.0-04-unix.tar.gz
mv nexus-3.14.0-04 /usr/local/nexus
mv /root/sonatype-work/ /usr/local/nexus

配置文件

1
2
3
4
5
vi /usr/local/nexus/etc/nexus-default.properties
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/

启动服务

1
2
3
ln /usr/local/nexus/bin/nexus /usr/sbin/nexus
nexus start
netstat -lnpt | grep 8081

端口起来的比较慢,耐心等待

访问172.16.1.12:8081

upload successful

默认提供的用户
admin
admin123

upload successful

创建role

设置——security——roles——addrole——设置roleid,名字以及权限——添加权限nx-all——保存

upload successful

upload successful

创建用户

设置——security——users——adduser——设置用户名,密码,邮箱,给用户添加role——保存

upload successful

upload successful

upload successful

创建代理仓库maven2-proxy

Repositories——create repository——maven2-proxy——添加仓库id,以及代理的仓库URL(阿里http://maven.aliyun.com/repository/public)——保存

upload successful

创建本地仓库maven2-hosted

Repositories——create repository——maven2-hosted——添加仓库id,选择仓库类型为release——保存

upload successful

再次创建maven2-hosted

Repositories——create repository——maven2-hosted——添加仓库id,选择仓库类型为snapshot——选择运行多测发布同一产品allow redeploy——保存

upload successful

创建仓库组group

Repositories——create repository——maven2-groups——添加仓库id,添加组中的成员(成员为上面创建的三个仓库)——保存

upload successful

放行防火墙、沙盒

1
2
systemctl stop firewalld
setenforce 0

复制仓库组的URL

upload successful

部署Maven

略……

修改配置文件

取消注释

1
2
3
4
5
6
7
8
9
vi /usr/local/maven/conf/settings.xml
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>local repository</name>
<url>http://172.16.1.12:8081/repository/app-group/</url>
</mirror>
</mirrors>

构建项目

1
mvn archetype:generate -DgroupId=com.test.one -DartifactId=one -DarchetypeAritifactId=maven-archetype-quickstart -DarchetypeCatalog=internal

修改项目中pom文件

发布测试版数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /root/one/pom.xml
<distributionManagement>
<snapshotRepository>
<id>snap</id>
<name>app-snapshot</name> //仓库名
<url>http://172.16.1.12:8081/repository/app-snapshot/</url>
</snapshotRepository>

<repository>
<id>release</id>
<name>app-release</name> //仓库名
<url>http://172.16.1.12:8081/repository/app-release/</url>
</repository>
</distributionManagement>

upload successful

修改主配置文件

1
2
3
4
5
6
7
8
9
10
11
vi /usr/local/maven/conf/settings.xml
<server>
<id>snap</id> //与项目pom文件中要上传的仓库对应的id必须一致
<username>lisi</username> //该用户是在nexus中创建的用户
<password>123456</password> //用户的密码
</server>
<server>
<id>release</id> //与项目pom文件中要上传的仓库对应的id必须一致
<username>lisi</username> //该用户是在nexus中创建的用户
<password>123456</password>
</server>

snap:测试版
release:发行版

进入项目目录

1
2
cd /root/one
mvn deploy //上传

nexus主机

验证

upload successful

upload successful

upload successful

upload successful

查看测试版仓库中测试版数据是否发布成功

upload successful

upload successful

maven主机

修改项目中pom文件

发布发行版数据

1
vim /root/one/pom.xml

upload successful

进入项目目录

1
2
cd /root/one
mvn deploy //上传

nexus主机

验证发行版仓库中的发行版数据是否发布成功

upload successful

upload successful