首页 教程 开发工具 使用 Docker 安装 Maven 私服 Nexus3

使用 Docker 安装 Maven 私服 Nexus3

在现代软件开发中,私有仓库是企业管理和分发内部依赖的重要工具,能够提高开发效率、加强依赖管理并确保构建的稳定性。Nexus Repository Manager 作为市场上常见的私服解决方案,不仅支持 Maven,还支持 npm、PyPI 等多种格式,为团队提供了统一的制品管理平台。

本文将介绍如何使用 Docker 快速部署 Maven 私服 Nexus3,帮助开发者搭建高效的依赖管理和分发环境,同时减少环境配置的复杂性和维护成本。通过 Docker 部署,您可以轻松实现版本化控制、灵活配置以及跨平台的便捷使用,是中小型团队和企业的理想选择。


文章目录

      • 1、背景知识
      • 2、环境搭建
        • 2.1、步骤一:下载 Nexus3 镜像
        • 2.2、步骤二:查看 Nexus3 镜像
        • 2.3、步骤三:创建 Nexus3 挂载文件夹
        • 2.4、步骤四:启动 Nexus3 容器
        • 2.5、步骤五:查看 Nexus3 容器启动状态
    • image-20241023102250642
      • 3、环境配置
        • 3.1、步骤六:打开 Nexus3 页面
        • 3.2、步骤七:登陆 Nexus3 用户
        • 3.3、步骤八:配置阿里云代理仓库
        • 3.4、步骤九:配置仓库组
        • 3.5、步骤十:创建用户
      • 4、配置本地 Maven 仓库
        • 4.1、步骤十一:复制 settings 文件
        • 4.2、步骤十二:配置 servers 节点
        • 4.3、步骤十三:配置 mirrors 节点
        • 4.4、步骤十四:配置profiles节点
      • 5、配置项目 pom.xml 文件

1、背景知识

在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共享这些类库呢?一种很好的方式就是在公司内部搭建一套 Maven 私服仓库。

搭建 Maven 私服仓库可以提高项目构建和部署的效率、稳定性和安全性,同时方便管理内部开发的组件和私有库,比较适用于企业内部或者特定场景下的需求。

2、环境搭建

2.1、步骤一:下载 Nexus3 镜像

在服务器命令行输入如下命令,下载 Nexus3 镜像(视网络情况,可能需要耐心等待一会儿):

$ docker pull sonatype/nexus3

2.2、步骤二:查看 Nexus3 镜像

在服务器命令行输入如下命令,查看下载的 Nexus3 镜像。

$ docker images

可以看到,已经成功下载 Nexus3 镜像

使用 Docker 安装 Maven 私服 Nexus3

2.3、步骤三:创建 Nexus3 挂载文件夹

在服务器命令行输入如下命令,创建 Nexus 的挂载文件夹:

$ mkdir /usr/local/nexus-data &&chown-R200 /usr/local/nexus-data

2.4、步骤四:启动 Nexus3 容器

在服务器命令行输入如下命令,启动 Nexus3 容器:

$ docker run -d-p8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data --restart=always sonatype/nexus3

可以看到,在上述启动命令中,我们将 Nexus3 容器的 /nexus-data 目录映射到了宿主机的 /usr/local/nexus-data 目录。此时 Nexus3 容器运行过程中,在 /nexus-data 目录产生的文件和日志都会在宿主机的 /usr/local/nexus-data 目录中查看到。

Ps:Nexus3 默认启动需要至少 2G 内存,所以一些环境下为了避免占用过多内,可以采用下面参数限制其内存:

$ docker run -d-e"INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"-p8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data sonatype/nexus3

2.5、步骤五:查看 Nexus3 容器启动状态

在服务器命令行输入如下命令,查看 Nexus3 容器启动状态:

$ dockerps

可以看到,Nexus3 容器启动成功,监听了 8081 端口。

使用 Docker 安装 Maven 私服 Nexus3

3、环境配置

搭建完 Nexus3 环境后,我们还需要对其进行配置,具体配置的步骤如下所示。

3.1、步骤六:打开 Nexus3 页面

Nexus3 容器启动时监听的端口和宿主机端口都是 8081,所以,我们在浏览器地址栏输入 http://宿主机IP地址:8081 打开 Nexus3 页面:

使用 Docker 安装 Maven 私服 Nexus3

3.2、步骤七:登陆 Nexus3 用户

点击 Nexus3 右上角的登录(Sign in),点击后会弹出如下图所示的提示框:

使用 Docker 安装 Maven 私服 Nexus3

对于第一次登陆,初始密码的存放位置为 /nexus-data/admin.password,因为我们在启动 Nexus3 容器时,将 Nexus3 容器的 /nexus-data 目录映射到了宿主机的 /usr/local/nexus-data 目录,所以,我们在宿主机的 /usr/local/nexus-data 目录中也能够查询到 admin.password 文件。

$ cat /usr/local/nexus-data/admin.password

此时,我们就查看到登录 Nexus3 的 admin 账号的密码为 13250a0a-1c02-498a-b15a-0a7aabad1add

使用 Docker 安装 Maven 私服 Nexus3

将 admin 账号和对应的密码输入到提示框中,即可登录 Nexus3。

使用 Docker 安装 Maven 私服 Nexus3

Ps:首次登录后会自动弹出完成必要设置的提示框,点击 Next 按钮,设自行置新密码,用于后续登录 Nexus。之后点击 Next 按钮,选择 Enable anonymous access 再次点击 Next 按钮后,点击 Finish 按钮,即可完成设置。

3.3、步骤八:配置阿里云代理仓库

如下图所示,Nexus 默认使用的远程仓库为 maven-central,从这个远程仓库下载依赖很慢,经常连不上。

使用 Docker 安装 Maven 私服 Nexus3

鼠标单机 maven-central 仓库,查看 maven-central 仓库配置的远程链接,如下图所示:

使用 Docker 安装 Maven 私服 Nexus3

可以看到,maven-central仓库配置的远程链接为 https://repo1.maven.org/maven2/,从这个远程仓库下载依赖很慢,经常连不上,所有我们需要配置阿里云远程代理仓库。

这里我们回到 Repositories 页面,点击 Create repository 按钮:

使用 Docker 安装 Maven 私服 Nexus3

点击后进入选择仓库类型的页面,这里我们选择 maven2(proxy) 类型。

点击选则 maven2(proxy) 类型后,进入配置远程代理仓库的页面:

使用 Docker 安装 Maven 私服 Nexus3

其中,每个配置项如下所示。

  • Name:aliyun-central

  • Version policy:Release

  • Layout policy:Strict

  • Remote storage:http://maven.aliyun.com/nexus/content/groups/public

接下来,拖动页面右侧的滚动条,滑到最下面,点击 Create repository 按钮

使用 Docker 安装 Maven 私服 Nexus3

点击 Create repository 按钮后,就可以在 Repositories 列表中看到新配置的阿里云代理仓库了

使用 Docker 安装 Maven 私服 Nexus3

并且 Status 显示的是 Online - Ready to connect,说明阿里云远程仓库配置成功。

3.4、步骤九:配置仓库组

接下来,需要将 aliyun-central 配置到仓库组,并且将 aliyun-central 排在 maven-central 上面。

Repositories 列表中,点击 maven-public

使用 Docker 安装 Maven 私服 Nexus3

点击进入页面后,下拉页面右侧的滚动条,找到如图所示的配置

使用 Docker 安装 Maven 私服 Nexus3

aliyun-central 移动到右侧,并排在最上面后,点击 Save 按钮保存配置。

3.5、步骤十:创建用户

接下来,创建一个用于上传 Jar 包到仓库的用户,具体步骤如下所示。

点击 Security 菜单下的 Users 菜单,再之后点击 Create local user 按钮

使用 Docker 安装 Maven 私服 Nexus3

随后,按照下图所示设置用户的基本信息

使用 Docker 安装 Maven 私服 Nexus3

这里,自行记录用户的密码,将 Status 设置为 Active 来启用账户,并设置账号的角色为 nx-admin,配置好之后,点击底部的 Create local user 按钮即可。

点击后在 Security 菜单下的 Users 菜单的用户列表中,可以查看到新创建的本地用户

使用 Docker 安装 Maven 私服 Nexus3

至此,Nexus3 配置完毕。


4、配置本地 Maven 仓库

配置完 Nexus 后,接下来,还需要对本地的 Maven 仓库进行配置,主要就是对 Maven 的 settings.xml 文件进行配置

4.1、步骤十一:复制 settings 文件

复制 setting.xml 文件为 setting-lizhengi.xml 文件

4.2、步骤十二:配置 servers 节点

在 settings-lizhengi.xml 文件中,找到 servers 节点,在 servers 节点中,配置在步骤十中创建的用户

<server><id>binghe</id><username>lizhengi</username><password>myPassword</password></server>

4.3、步骤十三:配置 mirrors 节点

在 settings-lizhengi.xml 文件中,找到 mirrors 节点,在 mirrors 节点中,配置仓库地址

<mirrors><mirror><id>lizhengi-nexus</id><name>Lizhengi Nexus3</name><url>http://tencentcloud:8081/repository/maven-public</url><mirrorOf>*</mirrorOf></mirror><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>

4.4、步骤十四:配置profiles节点

在 settings-lizhengi.xml 文件中,找到 profiles 节点,在 profiles 节点中,配置仓库信息:

<profile><id>maven-public</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties><repositories><repository><id>nexus-public</id><url>http://tencentcloud:8081/repository/maven-public/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories></profile>

至此,Maven私服仓库搭建完毕,并且本地Maven也已经配置完毕。

后续使用 Maven 构建项目时,指定使用 settings-lizhengi.xml 文件即可将依赖的 Jar 文件和生成的 Jar 文件上传到 Maven 私服仓库,如果使用 IDEA 编译项目,也需要在 IDEA 中,将 Maven 的配置文件指定为 settings-lizhengi.xml。


5、配置项目 pom.xml 文件

搭建完 Maven 私服仓库,配置好本地 Maven 仓库后,还需要在项目的 pom.xml 文件中进行相应的配置,具体如下所示:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><!--发布代码Jar插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin><!--发布源码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.0.0</version><executions><execution><phase>install</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin></plugins></build><distributionManagement><repository><!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 --><!--此仓库对应的为RELEASE版本的jar--><id>lizhengi</id><url>http://tencentcloud:8081/repository/maven-releases/</url></repository><snapshotRepository><!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 --><!--此仓库对应的为SNAPSHOT版本的jar--><id>lizhengi</id><url>http://tencentcloud:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.15k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.21k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.13k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.08k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  483

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  309

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。