基于Nexus搭建Maven私服及使用详解

前言

  1. 私服的搭建一般是在 Linux 环境,如果对 Linux 一窍不通可以查看我其它的博文,其中有 Linux 安装,及命令快速入门,作为一个开发者对 Linux 还是需要一定的了解。
  2. 如果你不想,也可以使用 windows 版本的 nexus 搭建私服,具体不做概述。
  3. 如果搭建后启动后,无法访问,可以查看防火墙问题(自己测试可直接关闭返防火墙),参考Linux防火墙:https://www.cnblogs.com/moxiaoan/p/5683743.html
  4. 安装包百度云链接: 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 界面详解

  1. 输入自己的 nexus 登录地址:http://192.168.1.153:8081/

  2. 右上角 Sign in 登录,账号:admin, 密码:admin123
    在这里插入图片描述

  3. 搜索功能,可按搜索指定 jar 包
    在这里插入图片描述

  4. Nexus的仓库类型

    Type 类型对应:

    proxy(代理类型):代理一个远程仓库url,缓存一份打此经过的 jar 。

    group(仓库组类型–门面):组合自己的多个库,成为一个路径对外提供服务;

    hosted(宿主类型):内部项目的发布仓库,内部 jar 存在在这;
    在这里插入图片描述

  5. 配置国内代理加速

    因maven中央仓库速度慢,我们一般优先使用国内远程仓库,这里配一个 aliyun 代理,查看第4步图中,

    点击 create repository 按钮,填写 name 与 remote storage 值。
    在这里插入图片描述
    在这里插入图片描述

  6. 调配 nexus 对外的门面

    当外部请求 nexus下载 jar 时,nexus 统一对外部提供一个服务窗口。我们配置它对远程仓库的代理顺序。

    编辑 maven-public 库(门面,统一访问),加入 aliyum 远程仓库,并调整顺序如下:
    在这里插入图片描述

    配置原因:

    ​ 当查询构件时,会依次从上往下查 releases/ napshots/ aliyun/ central 这四个库

    ​ 优先级:本地最优先,aliyun 次之,central 最末(因其速度最慢)

  7. 使用 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>	
    

  1. 上传 jar 到 nexus

    可以直接在 nexus 的界面上,使用 upload上传,但是整真正使用过程中,是不推荐的使用这种方式上传,推荐步骤 9 的打包上传方式[外链图片转存失败(img-uVp7iNek-1568974877549)(D:/%E4%BA%AB%E5%AD%A6VIP%E5%AD%A6%E5%91%98/%E2%91%A0%E7%AC%AC%E4%B8%80%E6%9C%9F%E8%AF%BE%E7%A8%8B/%EF%BC%8822%EF%BC%89maven/mavenImgs/TIM%E6%88%AA%E5%9B%BE20190828211542.png)]在这里插入图片描述

  2. 推荐:命令上传

    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,就能进入如下界面。
    [外链图片转存失败(img-r96XpD2S-1568974877553)(D:/%E4%BA%AB%E5%AD%A6VIP%E5%AD%A6%E5%91%98/%E2%91%A0%E7%AC%AC%E4%B8%80%E6%9C%9F%E8%AF%BE%E7%A8%8B/%EF%BC%8822%EF%BC%89maven/mavenImgs/TIM%E6%88%AA%E5%9B%BE20190828213525.png)]

  3. 设置允许覆盖发布

    ​ maven 中,对于发布版本,一旦发布推送到服务器(确立是一个稳定的版本),所以是不能覆盖上传的,对于快照是可以修改上传,这些都是可以根据自身需要而配置的,配置界面如下:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/w2462140956/article/details/101072387