一、所需软件
jdk8,nexus3
Nexus下载地址:https://www.sonatype.com/download-nexus-repo-oss
二、安装过程
1、将软件上传至/usr/local并解压
2、安装jdk和maven
(1)解压完毕
(2)配置/etc/profile文件并刷新配置
(3)执行source /etc/profile刷新配置
(4)执行java –version和mvn –version查看,如果查看到版本信息则证明成功。
3、到正题了,安装nexus
(1)私服介绍:私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
好处:
1)加速构建;
2)节省带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
(2)nexus结构
解压后由两部分组成,其中nexus-3.17.0-01包括了私服的应用配置和程序,sonatype-work用来存储数据
1)其中端口修改在/nexus-3.17.0-01/etc/nexus-default.properties的
application-port参数,默认为8081,改为8082
2)/nexus-3.17.0-01/bin/nexus.vmoptions有各种参数修改,比如数据存放地址, 虚拟机参数配置等。默认将数据放在sonatype-work/nexus3
3)/nexus-3.17.0-01/bin/nexus的信息基本不用改
(3)安装启动
1)运行。进入bin目录,运行./nexus.start,启动服务
2)输入ip:port进入系统,用户名为admin,初始密码为在
/sonatype-work//nexus3/admin.password目录下。输入用户名密码后进入系统并修改密码为Abcd1234 。
3)设置开机自启
- sudo ln -s /cpic/nexus/nexus-3.17.0/bin/nexus /etc/init.d/nexus
- 查看nexus服务状态、启动服务、停止服务等
service nexus status/start/stop
- 设置nexus服务开机自启动或者开机不启动
chkconfig nexus on/off
4)maven配置阿里云中央镜像
镜像是对repository而言,必须先存在repository,之后配置对应关系。
如果配置mirror ,则找mirror ,不再找对应的repository。所以mirror >= repository
找到mirrors标签,添加
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5)nexus私服构成介绍
登录后找到Repositories,打开,如下图
- component name的一些说明:
1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/ 拉取jar ;可以改为阿里云http://maven.aliyun.com/nexus/content/groups/public/ - 2)maven-releases:私库发行版jar
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。 - Nexus默认的仓库类型有以下四种:
1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库。可包含hosted和proxy两种库,下载时按配置顺序从中依次查找;
2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)。一般部署我们自己项目打包的jar,供内部人员下载;
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径);
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用); - Policy(策略):表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
- Public Repositories下的仓库
1)3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去;
2)Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
3)Central: 用来代理maven中央仓库中发布版本构件的仓库
4)Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
5)Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
6)Releases: 内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本;
7)Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
6)功能测试
使用upload功能上传第三方文件到私库
7)配置本地maven连接私库
a.本地maven库配置settings.xml,添加mirror即可从过私服下载
1、在mirrors添加mirror。可以添加多个mirror。这里只添加私库
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://10.71.0.138:8082/repository/maven-public/</url>
</mirror>
</mirrors>
2、在profiles添加profile
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
3、在avtinveProfiles添加activeProfile表示激活nexus
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
配置2和3的目的是为了可以下载releases库和snapshots库的jar包。
b.打包jar并传到私库
1、在servers添加server
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>Abcd1234</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>Abcd1234</password>
</server>
</servers>
2、在项目的pom文件添加如下代码,会将正式版发布到releases仓库,测试版发布到snapshots仓库。直接deploy即可发布到私服。注意:nexus-releases和nexus-snapshots为maven配置文件中配置的参数
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releases Repository</name>
<url>http://10.71.0.138:8082/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://10.71.0.138:8082/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
踩坑点:
1、在Anonymous没勾选,表示不允许匿名访问,导致一直下载不了。
2、本地maven用的是3.3.1,不知道是不是缓存问题,一直下载不了,经历了更新maven版本和重启电脑后解决问题。就记一下吧,如果有类似问题的朋友可以尝试下。