Maven私服搭建---Nexus 一、什么是Maven私服Maven 私服是一种特殊的Maven远程仓库它是架设在局域网内的仓库服务用来代理位于外部的远程仓库中央仓库、其他远程公共仓库。当然也并不是说私服只能建立在局域网也有很多公司会直接把私服部署到公网具体还是得看公司业务的性质是否是保密的等等因为局域网的话只能在公司用部署到公网的话员工在家里也可以办公使用。建立了 Maven 私服后当局域网内的用户需要某个构件时会按照如下顺序进行请求和下载。请求本地仓库若本地仓库不存在所需构件则跳转到第 2 步请求 Maven 私服将所需构件下载到本地仓库若私服中不存在所需构件则跳转到第 3 步。请求外部的远程仓库将所需构件下载并缓存到 Maven 私服若外部远程仓库不存在所需构件则 Maven 直接报错。此外一些无法从外部仓库下载到的构件也能从本地上传到私服供其他人使用。下图中展示了 Maven 私服的用途。二、Maven 私服优势Maven 私服具有以下 5 点优势节省外网带宽大量对于外部远程仓库的重复请求会消耗很大量的带宽利用 Maven私服代理外部仓库后能够消除对外部仓库的大量重复请求降低外网带宽压力。下载速度更快Maven 私服位于局域网内从私服下载构建更快更稳定。便于部署第三方构件有些构件是无法从任何一个远程仓库中获得的例如某公司或组织内部的私有构件、Oracle 的 JDBC 驱动等建立私服之后就可以将这些构件部署到私服中供内部 Maven 项目使用。提高项目的稳定性增强对项目的控制如果不建立私服那么 Maven 项目的构件就高度依赖外部的远程仓库若外部网络不稳定则项目的构建过程也会变得不稳定。建立私服后即使外部网络状况不佳甚至中断只要私服中已经缓存了所需的构件Maven 也能够正常运行。此外一些私服软件如 Nexus还提供了很多额外控制功能例如权限管理、RELEASE/SNAPSHOT 版本控制等可以对仓库进行一些更加高级的控制。降低中央仓库得负荷压力由于私服会缓存中央仓库得构件避免了很多对中央仓库的重复下载降低了中央仓库的负荷。三、Maven 私服搭建能够帮助我们建立 Maven 私服的软件被称为 Maven 仓库管理器Repository Manager主要有以下 3 种Apache ArchivaJFrog ArtifactorySonatype Nexus其中Sonatype Nexus 是当前最流行、使用最广泛的 Maven 仓库管理器。本篇文章也是重点讲解Sonatype Nexus。本篇直接基于nexus3最新版进行讲解1.安装maven1.1 下载maven# wget下载maven3.8.6 mkdir -pv /usr/local/maven cd /usr/local/maven wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz # 解压maven tar -zxvf apache-maven-3.8.6-bin.tar.gz1.2 设置maven环境变量# 修改环境变量增加maven vim /etc/profile export MAVEN_HOME/usr/local/maven/apache-maven-3.8.6 export PATH$MAVEN_HOME/bin:$PATH # 重载生效 source /etc/profile1.3 验证maven# 验证maven mvn -v2.安装Nexus2.1 Sonatype Nexus介绍Nexus 的全称是 Nexus Repository ManagerNexus 仓库管理器是 Sonatype 公司的一个产品。Nexus 是一个强大的仓库管理器极大地简化了内部仓库的维护和外部仓库的访问。Nexus 分为开源版和专业版其中开源版足以满足大部分 Maven 用户的需求。Nexus 开源版具有以下优点占用内存小28 M 左右具有基于 ExtJs 得操作界面用户体验较好使用基于 Restlet 的完全 REST API支持代理仓库、宿主仓库和仓库组基于文件系统不需要依赖数据库支持仓库管理支持构件搜索支持在界面上上传构件2.2 下载安装Nexus方式一官网下载最新版本Nexus 3.x官网免费版下载https://help.sonatype.com/repomanager3/product-information/download选择linux x86-64版本的点击下载方式二linux系统通过wget下载本次采用此方式wget https://download.sonatype.com/nexus/3/nexus-3.88.0-08-linux-x86_64.tar.gz环境准备# 创建 nexus 用户可选但推荐 sudo useradd -M -s /bin/bash -d /home/nexus nexus sudo passwd nexus # 或者使用现有用户确保有 /home/nexus 目录的权限 sudo mkdir -p /home/nexus sudo chown -R $(whoami):$(whoami) /home/nexus # 如果使用当前用户 # 或 sudo chown -R nexus:nexus /home/nexus # 如果使用 nexus 用户将下载的包上传至服务器本次上传路径/home/nexus或wget直接下载cd /home/nexus wget https://download.sonatype.com/nexus/3/nexus-3.88.0-08-linux-x86_64.tar.gz解压 压缩包# 进入安装包目录 cd /home/nexus # 解压 tar -zxvf nexus-3.88.0-08-linux-x86_64.tar.gz解压后会得到两个文件夹nexus-3.88.0-08nexus服务目录、sonatype-work私有库目录进入 nexus-3.21.2-03 文件夹其中 etc/nexus-default.properties 文件配置端口默认为 8081和 work 目录信息我们可以按需修改。vim /home/nexus/nexus-3.88.0-08/etc/nexus-default.properties然后执行如下命令开放 8081 端口# 开放8081端口 firewall-cmd --zonepublic --add-port8081/tcp --permanent重启防火墙firewall-cmd --reload进入执行如下命令启动服务# 进入启动目录 cd /home/nexus/nexus-3.88.0-08/bin # 启动nexus ./nexus start # 关闭 Nexus ./nexus stop # 在当前终端中显示日志信息以便通过“run”命令进行测试 ./nexus run # 查看日志 tail -1000f /home/nexus/sonatype-work/nexus3/log/nexus.log./nexus start与./nexus run两者对比表命令运行方式终端关闭日志输出使用场景./nexus run前台服务停止控制台打印调试、排错./nexus start后台守护服务继续运行写入日志文件线上、长期运行Nexus服务启动以后我们使用浏览器访问http://IP:8081/即可进入登陆页面http://192.168.206.136:8081/默认账户为admin初始密码保存在nexus安装目录下的 sonatype-work 的 admin.password 文件中当修改完密码后该文件会被删除cat /home/nexus/sonatype-work/nexus3/admin.password登录后提示修改密码,本次将密码修改为admin选择权限配置四、使用配置Nexus仓库有3类proxy 代理仓库- 也就是别人的仓库hosted 私有仓库 - 也就是自己的仓库group 聚合仓库 - 一般引用都是使用这个库1.配置代理库1.1 使用admin账户登录然后点击Configuration Repositories1.2 配置ali的maven镜像提高速度 (代理库)阿里rep地址 : https://maven.aliyun.com/repository/public1.3 点击 Create repository1.4 选择maven2(proxy)1.5 定义名字、填写URL、最下面点击Create repository1.6 在group中加入ali镜像找到maven-public的group仓库点最右边的进入修改在最下面 Group处 , 把ali的镜像加入1.7 私有仓库(hosted)不用创建 , 使用原有的 maven-releases 和 maven-snapshots即可