Nexus-私服搭建

我的梦境 提交于 2021-01-22 14:37:35

前言

Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:

Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。

Nexus 是“开箱即用”的系统,不需要数据库,它使用文件系统加 Lucene 来组织数据,支持 WebDAV 与 LDAP 安全身份认证。Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。Nexus 极大地简化了本地内部仓库的维护和外部仓库的访问。另外,Nexus 还可以在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间。
本篇 Nexus 选择 3.x 版本,Nexus3.x 相较 2.x 版本有很大的改变:

1)从底层重构,从而提高性能,增强扩展能力,并改善用户体验
2)升级界面,增加更多的浏览,搜索和管理功能
3)提供安装包,使部署更简单(安装完自动添加成服务,省去手动添加的麻烦)
4)增加 Docker,NuGet,npm,Bower的支持
5)提供新的管理接口,从而能自动管理任务。
注意:3.x版本只能运行在JVM8及以上
总之,本地内部仓库在本地构建nexus私服的好处有:

1)加速构建、稳定;
2)节省带宽、节省中央maven仓库的带宽;
3)控制和审计;
4)能够部署第三方构件;
5)可以建立本地内部仓库、可以建立公共仓库

下载解压安装包

wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.10.0-04-unix.tar.gz  

tar zxvf nexus-3.10.0-04-unix.tar.gz 

启动停止

   进入解压后生成的文件夹   使用bin/nexus start(stop) 命令进行启动,nexus启动后大约需要一分钟才能访问到页面  

   如果提示使用root用户进行启动是不提倡的,使用命令: vi  /etc/profile编辑环境变量   在最后追加一行 export RUN_AS_USER=root 

Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下:

1、因为其中的rc.local是在完成所有初始化之后执行,因此可以把启动脚本写到里面; 
2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入需要执行的脚本程序:
su -l $username -c "/nexus/nexus-3.10.0-04/bin/nexus start"

  访问nexus:IP:Port,默认端口是8081,默认管理员用户名和密码是admin/admin123,默认工作目录是sonatype-work(路径一般在nexus同级目录下),可以在etc/nexus-default.properties配置中修改

创建自己的代码仓库

Blob Stores

文件存储的地方,创建一个目录的话,对应文件系统的一个目录

Repositories

1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
2)hosted(宿主类型):内部项目的发布仓库(一般分为releases发布版以及snapshots快照);
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库;
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);

group就是能把多个仓库合成一个仓库来使用

hosted是宿主机的意思,有三种方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的快照版本
Mixed:混合的

proxy就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。

Name:就是为代理起个名字
Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/
Blob Store: 选择代理下载包的存放路径

上传到nexus私服

1. 修改Maven的settings.xml文件,加入认证机制

<server>  
    <id>nexus-releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
  </server>  
 <server>  
  <id>nexus-snapshots</id>  
  <username>admin</username>  
  <password>admin123</password>  
  </server> 

2. 修改工程的pom文件

!--将生成的项目部署到远程仓库(私服)-->
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://${maven.server}/repository/mvn-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>http://${maven.server}/repository/mvn-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注: pom文件中的id要跟settings.xml文件中的id一定要对应上

指定nexus私服

<!--将nexus私服配置为远程仓库-->
<repositories>
    <repository>
        <id>nexus</id>
        <url>http://${maven.server}/repository/mvn-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!