maven私服搭建,sonatype nexus

私服简介

https://blog.csdn.net/wuxiaobingandbob/article/details/79396239

1 . 私服简介

  • 当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;
  • 否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:

这里我们使用 Sona type Ne x us。

sona 
英  美  全球(美国)  
简明 例句  百科
abbr. 服务导向的网络架构(Service Oriented Network Architecture)

Nexus 
英 /ˈneksəs/  美 /ˈneksəs/  全球(美国)  
简明 牛津 新牛津  韦氏  柯林斯 例句 例句、百科在这里  百科
n. 关系;连结,连系
复数 nexuses或nexus

nuget 
英 /snæps/ 美 /snæps/ 
简明 柯林斯 例句  百科
n. 纽扣;四合扣;饰片类(snap的复数形式)
v. 猛咬;咬断;谩骂;砰然关上(snap的三单形式)

blob 
英 /blɒb/  美 /blɑːb/  全球(美国)  
简明 牛津 新牛津  韦氏  柯林斯 例句  百科
n. 一滴;一抹;难以名状的一团
vt. 弄脏;把……做错
vi. 得零分;弄错
  • Nexus 专业版是需要付费的,这里我们下载开源版 Nexus OSS。

  • Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:http://www.sonatype.org/nexus/go。

    迅雷下载这个,或者下载别人百度云的分享。公司使用的也是3.12
    https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.12.0-01-unix.tar.gz
    
    面对liunx用户的3.18.1版本
    链接:https://pan.baidu.com/s/1ihdAkVfQbfdcl6KIlgQtxQ
    提取码:tpxt
    
  • mvn clean install命令就会自动打包。

Maven的安装与配置

步骤一:

  1. 下载Maven安装包

​ Maven官网下载地址http://maven.apache.org/download.cgi

​ apache-maven-3.1.1-bin.tar.gz

  1. 解压

​ tar -xvf apache-maven-3.1.1-bin.tar.gz

  1. 配置环境变量,编辑/etc/profile文件,添加如下代码

        MAVEN_HOME=/opt/tem/apache-maven-3.1.1
    
    ​    export MAVEN_HOME
    
    ​    export PATH=${PATH}:${MAVEN_HOME}/bin
    

img

  1. 保存文件,并运行如下命令使环境变量生效

​ source /etc/profile

  1. 在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功。

mvn -v

Sonatype Nexus私服安装与配置

  1. 下载Nexus私服安装包

​ Nexus官网下载地址http://www.sonatype.org/nexus/

​ nexus-2.10.0-02-bundle.tar.gz

  1. 解压

    • tar -xvf nexus-2.10.0-02-bundle.tar.gz

我下载的是:

  • /usr/local/nexus-2.11.4-01/bin
  1. 可以编辑nexus-2.10.0-02/conf/nexus.properties自定设置参数,包括端口号等。

  2. 启动nexus,启动命令

发现用ROOT启动不了,这时我们要export RUN_AS_USER=root 导入root用户, 在#./nexus start 这时就不会了

  • #./nexus status 查看有没有启动

  • 当没执行时,我们要查看日志,tail -200 logs/wrapper.log |more

  • 这时出现了JDK版本不对,最低是JDK1.7,安装JDK1.7,然后在重新执行就可以了

  • 我的是jdk16,太新了,也不行,用了 jdk8,就可以了

  • 这时就运行起来了,我们用IE访问一下

  • http://192.168.74.129:8081/nexus 默认的用户名和密码是admin/admin123

  • 3.X 的 在登录的时候,提示密码保存在 哪里了

  • 可以 在 /etc/init``.d 设置Nexus私服开机就启动,网上有很多,这里就不具体介绍了。

设置代理

  • 如果服务器需要代理才能访问外网,这时我们需要设置代理

img

仓库分组介绍

点击左侧 Repositories 链接,查看 Nexus 内置的仓库:

img

Nexus 的仓库分类:

  • hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件
    • (如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
  • proxy 代理仓库:代理公共的远程仓库;
  • virtual 虚拟仓库:用于适配 Maven 1;
  • group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,
    • 这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

img

  1. nexus里可以配置3种类型的仓库,分别是

    1. proxy、代理
    2. hosted、宿主
    3. group 分组
  2. proxy是远程仓库的代理。

    1. 比如说在nexus中配置了一个central repository的proxy,
    2. 当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,
    3. 如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用。
  3. hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。

    1. 比如说oracle的驱动程序,ojdbc6.jar,
    2. 在central repository是获取不到的,就需要手工上传到hosted里。
  4. group是仓库组,在maven里没有这个概念,是nexus特有的。

    1. 目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,
    2. 只要统一配置group的地址就可以了。

添加代理仓库

以 Sonatype 为例,添加一个代理仓库,用于代理 Sonatype 的公共远程仓库。点击菜单 Add - Proxy Repository :

img

填写Repository ID - sonatype;

Repository Name - Sonatype Repository;

Remote Storage Location - http://repository.sonatype.org/content/groups/public/ ,

save 保存:

img

把自己的仓库加入 Public Repositories

将添加的 Sonatype 代理仓库加入 Public Repositories 仓库组。选中 Public Repositories,在 Configuration 选项卡中,将 Sonatype Repository 从右侧 Available Repositories 移到左侧 Ordered Group Repositories,save 保存:

img

搜索构件

为了更好的使用 Nexus 的搜索,我们可以设置所有 proxy 仓库的 Download Remote Indexes 为 true,即允许下载远程仓库索引。

img

索引下载成功之后,在 Browse Index 选项卡下,可以浏览到所有已被索引的构件信息,包括坐标、格式、Maven 依赖的 xml 代码:

img

进行搜索

有了索引,我们就可以搜索了:

img

配置Maven使用私服

  • 私服搭建成功,我们就可以配置 Maven 使用私服,以后下载构件、部署构件,都通过私服来管理。

  • 在 settings.xml 文件中,为所有仓库配置一个镜像仓库,

  • 镜像仓库的地址即私服的地址(这儿我们使用私服 公共仓库组 Public Repositories 的地址):

img

    <mirrors>
            <mirror>
                <id>central</id>
                <mirrorOf>*</mirrorOf> <!-- * 表示让所有仓库使用该镜像--> 
                <name>central-mirror</name> 
                <url>http://localhost:8081/nexus/content/groups/public/</url>
            </mirror> 
    </mirrors>
maven-public
http://192.168.2.117:8081/repository/maven-public/