【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用

文章目录

  • 【Maven】008-Maven 私服搭建与使用
  • 一、概述
    • 1、简介
    • 2、建立私服后依赖查找和下载逻辑
      • 第一步:请求本地仓库
      • 第二步:请求 Maven 私服
      • 第三步:请求外部远程仓库(远程中央仓库等)
      • 参考图
    • 3、Maven 私服的优势
    • 4、Maven 私服常用的产品
  • 二、Nexus 下载、安装、初始设置
    • 1、下载
      • 地址
      • 目标
    • 2、安装
      • 第一步:解压到一个目录
      • 第二步:启动
      • 第三步:访问 `http://localhost:8081/`
    • 3、初始设置
      • 登录
      • 根据提示设置新密码
      • 禁用匿名登录
      • 初始化完成后
  • 三、Nexus 上的仓库
    • 1、仓库
    • 2、仓库类型&说明
    • 3、仓库名称&说明
    • 4、初始状态仓库内为空
  • 四、通过 Nexus 下载 jar 包
    • 1、将中央仓库地址设置为阿里云镜像地址
      • 第一步:选择要修改的仓库
      • 第二步:修改地址为阿里云镜像地址
      • 第三步:保存配置
    • 2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址
      • 第一步:拷贝自己的私服仓库地址
      • 第二步:修改本机 Maven 配置的阿里云镜像地址
      • 第三步:添加访问用户名密码
    • 3、通过 Nexus 下载 jar 包
      • 第一步:修改本机 Maven 仓库地址
      • 第二步:在 Maven 工程下执行 Maven 命令
      • 第三步:查看私服仓库
  • 五、将 jar 包部署到 Nexus
    • 1、Maven 工程中配置
    • 2、执行部署命令
      • 执行日志
      • 私服
  • 六、引用别人部署的 jar 包
    • 1、Maven 工程中配置
    • 2、打包日志

一、概述

1、简介

Maven私服(Repository Manager)是一个用于管理和分发构建制品(如JAR、WAR、POM文件等)的服务器。它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括 Nexus、Artifactory 和 Apache Archiva 。

2、建立私服后依赖查找和下载逻辑

第一步:请求本地仓库

  • 当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构件。
  • 如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。

第二步:请求 Maven 私服

  • 如果本地仓库中不存在所需构件,用户的请求将转向 Maven 私服。
  • Maven 私服会检查自身的仓库,如果存在所需构件,将其下载到本地仓库,并返回给用户。

第三步:请求外部远程仓库(远程中央仓库等)

  • 如果 Maven 私服也没有所需构件,系统将尝试从外部的远程仓库(通常是中央仓库)中获取。
  • 如果外部远程仓库存在所需构件,Maven 私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。
  • 如果外部远程仓库中也不存在所需构件,Maven 将报错,指示找不到所需的依赖项。

参考图

【Maven】008-Maven 私服搭建与使用_第1张图片

3、Maven 私服的优势

  1. 加速构建过程: Maven 私服允许团队在本地搭建一个中央存储库,使得构建时可以优先从局域网内的私服获取依赖项,从而减少对外部远程仓库的依赖,加速构建过程。
  2. 降低对外部网络的依赖性: 私服允许团队在没有互联网连接或网络较差的情况下进行构建。依赖项的本地缓存和私服的存在减少了对外部网络的依赖性,提高了项目的可靠性。
  3. 统一依赖管理: 通过私服,团队可以统一管理和控制项目所需的依赖项版本,确保整个团队使用相同的构建制品,降低了版本冲突和不一致性的可能性。
  4. 安全性: 私服可以提供访问控制和安全认证机制,限制对仓库的访问,确保只有授权的人员能够发布和获取构建制品。这有助于保护项目的代码和依赖项的安全性。
  5. 本地镜像和缓存: 私服可以缓存外部远程仓库中的构建制品,降低了从外部仓库获取依赖项的延迟。此外,私服还可以配置为本地镜像,提供更快速的下载。
  6. 离线部署: Maven 私服支持离线部署,使得在没有互联网连接的环境中也能够构建和部署项目,适用于一些安全要求较高或隔离网络的场景。

4、Maven 私服常用的产品

  1. Nexus(当前最流行、使用最广泛):
    • Nexus 是 Sonatype 公司推出的一款流行的 Maven 私服产品。
    • 提供强大的仓库管理和安全性功能。
    • 支持多种仓库格式,包括Maven、npm、Docker等。
  2. Artifactory:
    • Artifactory是JFrog公司开发的另一款领先的构建制品仓库管理工具。
    • 支持各种包括 Maven、Gradle、npm 等的构建工具。
    • 具有高度可伸缩性和灵活的部署选项。
  3. Apache Archiva:
    • Apache Archiva 是由 Apache 软件基金会提供的开源 Maven 私服工具。
    • 提供基本的仓库管理功能,适用于小型项目或对简单配置有需求的团队。

二、Nexus 下载、安装、初始设置

1、下载

地址

https://help.sonatype.com/repomanager3/product-information/download

目标

【Maven】008-Maven 私服搭建与使用_第2张图片

2、安装

第一步:解压到一个目录

【Maven】008-Maven 私服搭建与使用_第3张图片

第二步:启动

使用管理员身份打开 CMD ,切换到 bin 目录。

命令:

  • 安装:nexus.exe /install bm-maven
  • 启动:nexus.exe /start bm-maven
  • 停止:nexus.exe /stop bm-maven
  • 卸载:nexus.exe /uninstall bm-maven

【Maven】008-Maven 私服搭建与使用_第4张图片

第三步:访问 http://localhost:8081/

【Maven】008-Maven 私服搭建与使用_第5张图片

3、初始设置

登录

用户名:admin

密码:(在 Nexus\sonatype-work\nexus3\admin.password )

【Maven】008-Maven 私服搭建与使用_第6张图片

根据提示设置新密码

【Maven】008-Maven 私服搭建与使用_第7张图片

禁用匿名登录

【Maven】008-Maven 私服搭建与使用_第8张图片

初始化完成后

【Maven】008-Maven 私服搭建与使用_第9张图片

三、Nexus 上的仓库

1、仓库

【Maven】008-Maven 私服搭建与使用_第10张图片

2、仓库类型&说明

仓库类型 说明
proxy 某个远程仓库的代理
group 存放:通过 Nexus 获取的第三方 jar 包
hosted 存放:本团队其他开发人员部署到 Nexus 的 jar 包

3、仓库名称&说明

仓库名称 说明
maven-central Nexus 对 Maven 中央仓库的代理
maven-public Nexus 默认创建,供开发人员下载使用的组仓库
maven-releases Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本
maven-snapshots Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本

4、初始状态仓库内为空

【Maven】008-Maven 私服搭建与使用_第11张图片

四、通过 Nexus 下载 jar 包

1、将中央仓库地址设置为阿里云镜像地址

为了加快国内下载速度!

第一步:选择要修改的仓库

【Maven】008-Maven 私服搭建与使用_第12张图片

第二步:修改地址为阿里云镜像地址

http://maven.aliyun.com/nexus/content/groups/public/

【Maven】008-Maven 私服搭建与使用_第13张图片

第三步:保存配置

【Maven】008-Maven 私服搭建与使用_第14张图片

2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址

第一步:拷贝自己的私服仓库地址

【Maven】008-Maven 私服搭建与使用_第15张图片

第二步:修改本机 Maven 配置的阿里云镜像地址

【Maven】008-Maven 私服搭建与使用_第16张图片

第三步:添加访问用户名密码

我们设置了禁止匿名访问!

这里需要格外注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。

【Maven】008-Maven 私服搭建与使用_第17张图片

3、通过 Nexus 下载 jar 包

第一步:修改本机 Maven 仓库地址

因为原本的仓库里面可能已经有很多内容了,为了直观,新建一个本地空仓库(一个空文件夹),让 Maven 直接向私服获取依赖!

【Maven】008-Maven 私服搭建与使用_第18张图片

第二步:在 Maven 工程下执行 Maven 命令

mvn clean compile

部分下载过程日志:

......
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar (217 kB at 42 kB/s)
Downloading from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/log4j/log4j/1.2.12/log4j-1.2.12.jar (358 kB at 63 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar (45 kB at 7.9 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar (134 kB at 23 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar (121 kB at 21 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/com/google/collections/google-collections/1.0/google-collections-1.0.jar (640 kB at 89 kB/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo1\target\classes
[INFO]
[INFO] ---------------------------< com.zibo:demo2 >---------------------------
[INFO] Building demo2 1.0-SNAPSHOT                                        [3/3]
[INFO]   from demo2\pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ demo2 ---
[INFO] Deleting D:\MyFile\IDEAProjects\mvn-demo\demo2\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo2\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mvn-demo 1.0-SNAPSHOT:
[INFO]
[INFO] mvn-demo ........................................... SUCCESS [  8.613 s]
[INFO] demo1 .............................................. SUCCESS [01:22 min]
[INFO] demo2 .............................................. SUCCESS [  0.079 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:31 min
[INFO] Finished at: 2024-01-14T13:26:44+08:00
[INFO] ------------------------------------------------------------------------

第三步:查看私服仓库

【Maven】008-Maven 私服搭建与使用_第19张图片

五、将 jar 包部署到 Nexus

如出现问题,请调整下面配置。

1、Maven 工程中配置

注意:这里 repository 和 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。

<distributionManagement>
    
    <repository>
        <id>zibo-nexus-mavenid>
        <name>zibo nexus maven releasesname>
        <url>http://localhost:8081/repository/maven-releases/url>
    repository>
    
    <snapshotRepository>
        <id>zibo-nexus-mavenid>
        <name>zibo nexus mavenname>
        <url>http://localhost:8081/repository/maven-snapshots/url>
    snapshotRepository>
distributionManagement>

2、执行部署命令

mvn deploy

执行日志

【Maven】008-Maven 私服搭建与使用_第20张图片

私服

【Maven】008-Maven 私服搭建与使用_第21张图片

六、引用别人部署的 jar 包

1、Maven 工程中配置

<dependencies>
    <dependency>
        <groupId>com.zibogroupId>
        <artifactId>demo1artifactId>
        <version>1.0.0version>
    dependency>
dependencies>

<repositories>
    <repository>
        <id>zibo-nexus-mavenid>
        <name>zibo nexus mavenname>
        <url>http://localhost:8081/repository/maven-releases/url>
        <releases>
            <enabled>trueenabled>
        releases>
    repository>
repositories>

2、打包日志

【Maven】008-Maven 私服搭建与使用_第22张图片

你可能感兴趣的:(Maven,maven,java)