1 Star 0 Fork 29

柚子 / notebook

forked from JustryDeng / notebook 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
[04]使用docker快速搭建maven私服.md 9.01 KB
一键复制 编辑 原始数据 按行查看 历史
JustryDeng 提交于 2022-12-04 12:52 . 使用docker快速搭建maven私服

使用docker快速搭建maven私服

需求说明

image-20221204103557593

通常,我们开发项目并没有使用到虚线标识的那两部分,基本都是通过本机的Maven直接访问中央仓库,下载jar包到本地仓库。现在我们需要搭建中间虚线部分

准备工作

确保安装有docker

安装教程见[CentOS 7安装docker、docker-compose](../docker-re/[04]CentOS 7安装docker、docker-compose.md)

查看运行的docker版本

docker -v

image-20221203082303705

搭建maven私服

三种专门的Maven仓库管理软件可以用来帮助大家建立私服:

  • Apache基金会的Archiva
  • JFrog的Artifactory
  • Sonatype的Nexus

Nexus是当前(2022-12-04)最流行的Maven仓库管理工具

第一步:准备nexus镜像

# 查找镜像
docker search sonatype/nexus3
# 拉取镜像
docker pull sonatype/nexus3
# 创建目录以存储nexus数据
mkdir -p /opt/nexus/data
chmod 777 -R /opt/nexus/data

image-20221204104455741

第二步:启动nexus镜像

# 启动
docker run -d --name nexus3 -p 8081:8081 --restart always -v /opt/nexus/data:/nexus-data sonatype/nexus3
# 查看实时启动日志
docker logs -f nexus3

image-20221204104901713

第三步:访问nexus

提示:访问前,请确保对应端口已开放

http//{ip}:{端口}, 端口上面我们映射的是宿主机的8081端口

image-20221204105357252

进行登录

admin密码可通过cat /opt/nexus/data/admin.password获取到

image-20221204105611391

首次登录成功后,会让设置新密码

image-20221204105739314

第四步:配置nexus

相关概念说明

  • 默认仓库说明

    • maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar

    • maven-releases:私库发行版jar

    • maven-snapshots:私库快照版(调试版本)jar

    • maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务

      注:在本地maven的settings.xml或项目的pom.xml中配置的,就是maven-public

  • nexus仓库类型介绍

    • hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库
    • proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库
    • group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可

搭建好nexus后,nexus会默认自带几个创建好的仓库

image-20221204110857670

如图所示,

  • 1 - 代理仓库,负责代理远程中央仓库
  • 2 - 组资源库 = 代理资源库 + 托管资源库
  • 3 - 本地仓库,负责本地资源

配置nexus

提示:我们可以新建仓库,也可以直接修改nexus默认创建的几个仓库的配置。为方便,本人这里直接在nexus默认创建的几个仓库里面进行配置修改

配置代理仓库

image-20221204112705555

image-20221204113209780

注:常用的几个远程仓库

  • jboss的maven中央仓库地址:http://repository.jboss.com/maven2/
  • 阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
  • apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/
配置本地maven-releases仓库

说明: 本地maven-snapshots可以采用默认的就行

image-20221204113725773

部署策略设置允许重复部署(初次安装最好将Deployment policy设置为Allow redeploy,可避免一些问题)

部署策略说明:

  • Allow redeploy:允许同一个版本号下重复部署(即:允许覆盖)
  • Disable redeploy:不允许同一个版本号下重复提交代码(即:不允许覆盖)
  • Read-Only:不允许提交任何版本
  • Deploy by Replication Only:仅允许通过副本部署

注:原生的maven-releases库是Disable redeploy设置, maven-snapshots是Allow redeploy。

image-20221204113755390

配置仓库组

image-20221204114219410

image-20221204114410749

说明:

  • 在1处会罗列出所有可用的仓库,选中后右移到2处,即将该仓库添加到当前仓库组下了
  • 注意Members中的仓库顺序,查找依赖时,会优先从上面的仓库查找,查找不到再去下面的仓库中查找

第五步:使用测试

测试一:测试私服生效

  • 第一步:在maven的settins配置文件中,设置要使用的nexus私服仓库组地址

    image-20221204121150999

    <mirrors>
        <mirror>
            <!-- id name自取名即可 -->
            <id>jutsrydeng-maven-group</id>
            <name>maven public or JustryDeng</name>
            <!-- 设置nexus私服 仓库组地址 -->
            <url>http://47.105.39.189:8081/repository/maven-public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
  • 第二步:随便打开个maven项目,执行mvn clean compile -U

    参数-U:使代理仓库从远程中央仓库下载jar包到私服

    image-20221204124706726

  • 第三步:去nexus检查私服中是否有相关jar包了

    image-20221204125035655

    image-20221204125100832

测试二:部署jar到私服

  • 第一步:在maven的settins配置文件中,设置好nexus私服的登录账号、密码

    image-20221204121150999

    <servers>
        <server>
            <!-- id可以随便取,只需要保证在pom.xml用到的时候,指定的id能对应上这里即可 -->
            <id>jutsrydeng-aliyun-nexus</id>
            <username>admin</username>
            <password>dengshuai1994</password>
        </server>
    </servers>
  • 第二步:在项目的pom.xml中,指定要部署到的私服仓库

    <distributionManagement>
        <repository>
            <!-- 指定使用的凭证-->
            <id>jutsrydeng-aliyun-nexus</id>
            <!-- 私有正式库-->
            <url>http://47.105.39.189:8081/repository/maven-releases/</url>
        </repository>
    
        <snapshotRepository>
            <!-- 指定使用的凭证-->
            <id>jutsrydeng-aliyun-nexus</id>
            <!-- 私有快照库-->
            <url>http://47.105.39.189:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
  • 第三步,进行mvn deploy部署

    提示:deploy时,会根据版本号后面是否带有-SNAPSHOT来决定,将包部署至正式库还是快照库,

    • 带有-SNAPSHOT:部署至私有快照库
    • 不带有-SNAPSHOT:部署至私有正式库

    将项目部署到私有正式库

    image-20221204121749528

    将项目部署到私有快照库

    image-20221204122936138

    去nexus私服私有正式库看一下是否部署上去了

    image-20221204123232672

    image-20221204123300813

    去nexus私服私有快照库看一下是否部署上去了

    image-20221204123419836

    image-20221204123441350

相关资料

1
https://gitee.com/WY784755850/notebook.git
git@gitee.com:WY784755850/notebook.git
WY784755850
notebook
notebook
master

搜索帮助