【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件

这篇具有很好参考价值的文章主要介绍了【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nexus是什么

Nexus 读音:/ˈneksəs/是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。

nexus repository,# maven,maven,apache,java

Maven 私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点,使得私服在实际开发过程中得到了相当普遍地使用。

能够帮助我们建立私服的软件被称为 Maven 仓库管理器,主要有以下 3 种:

  • Apache Archiva
  • JFrog Artifactory
  • Sonatype Nexus

其中,Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版,其中开源版足以满足大部分 Maven 用户的需求。

Nexus 开源版具有以下特性:

  • 占用内存小(28 M 左右)
  • 具有基于 ExtJs 得操作界面,用户体验较好
  • 使用基于 Restlet 的完全 REST API
  • 支持代理仓库、宿主仓库和仓库组
  • 基于文件系统,不需要依赖数据库
  • 支持仓库索引以及搜索
  • 支持在界面上上传构件
  • 安全控制

Nexus 专业版需要付费购买,它主要包含一些企业级的高级特性,详情请参考 Sonatype Nexus 官方文档。

Nexus下载和安装

目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,它们是并行的关系,目前使用最多,运行最稳定的是 Nexus 2.x,下面我们以 Nexus 2.x 为例,演示 Nexus 的安装过程。

1. 进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,如下图所示。

nexus repository,# maven,maven,apache,java

图1:Nexus 2.x 下载页面

2. 将下载 Nexus 安装包解压到本地磁盘,可获得 nexus-2.14.20-02 和 sonatype-work 2 个目录,如下图。

nexus repository,# maven,maven,apache,java

图2:Nexus 2.x 目录
其中:

  • nexus-2.14.20-02:该目录中包含了 Nexus 2.x 运行所需要的文件,如启动脚本、依赖 jar 包等。
  • sonatype-work:该目录中包含了 Nexus 2.x 生成的配置文件、日志文件等。

3. nexus-2.14.20-02 中包含以下目录及文件。

nexus repository,# maven,maven,apache,java

图3:nexus-2.14.20-02 目录及文件列表
nexus-2.14.20-02 目录说明,如下表所示。

子目录 说明
bin 命令中心(启动命令,关闭命令)
conf 配置中心(管理着仓库列表、日志配置,以及安全设置)
lib Nexus 的库文件,Nexus 运行时需要的 jar 包所在的目录
logs 存放日志文件
nexus Nexus 应用程序
tmp 存放Nexus 运行时产生的临时文件

4. .进入 \nexus-2.14.20-02\bin\jsw 文件夹,根须操作系统版本选择合适的目录,由于我的操作系统是 Windows 10 64 位,所以我选择 windows-x86-64 目录,如下图所示。

nexus repository,# maven,maven,apache,java

图4:nexus-2.14.20-02\bin\jsw 目录列表

5. 进入 windows-x86-64 目录后可以看到如下文件。

nexus repository,# maven,maven,apache,java

图5:Nexus 启动文件列表

其中:

  • console-nexus.bat:启动 Nexus 并在 DOS 命令行中展示启动过程。
  • install-nexus.bat:将 Nexus 安装为 Windows 服务,开机自动启动。
  • start-nexus.bat:启动 Nexus。
  • stops-nexus.bat:停止 Nexus。
  • uninstall-nexus.bat:与 install-nexus.bat 相对应,负责卸载 Nexus 服务。

6. 双击运行 install-nexus.bat 安装 Nexus 服务,然后运行 start-nexus.bat 启动服务。

注意:

  • 运行 install-nexus.bat 安装服务,若提示”wrapper | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。
  • 运行 start-nexus.bat 启动服务,若提示”wrapper | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。

7. 访问 http://localhost:8081/nexus,结果如下图,则表示服务启动成功,否则表示服务启动失败。

nexus repository,# maven,maven,apache,java

图6:Nexus 首页

8. 点击首页右上角的“Log In”按钮,在登录页面输入用户名和密码(默认分别为:admin 和 admin123 ),最后点击“Log In”按钮登录。

nexus repository,# maven,maven,apache,java

图7:Nexus 登录界面

9. 登录成功后,结果如下图。

nexus repository,# maven,maven,apache,java

图8:Nexus 登录成功

Nexus仓库属性和分类

Nexus 作为一款 Maven 仓库管理器,仓库(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了许多仓库概念,如代理仓库、宿主仓库以及仓库组等。Nexus 为每一种仓库都提供了丰富的配置参数,方便我们根据自身需要进行定制。

Nexus 仓库属性

点击左边导航栏中的 Repositories,可以看到 Nexus 自带的几个内置仓库,如下图所示。

nexus repository,# maven,maven,apache,java

图1:Nexus 内置仓库列表(猛击图片可以查看原图)

在仓库列表中,每个仓库都具有一系列属性:

  • Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
  • Format:仓库的格式。
  • Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
  • Repository Status:仓库的状态。
  • Repository Path:仓库的路径。

由图 1 可知,Nexus 2.x 默认创建了 6 个仓库,我们称它们为 Nexus 内置仓库。

  • Maven Central:该仓库用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件。
  • Releases:策略为 Release 的宿主仓库,用来部署公司或组织内部的发布版本构件。
  • Snapshots:策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件。
  • 3rd party:策略为 Release 的宿主仓库,用来部署第三方发布版本构件,这些构件一般无法从任何远程仓库中获得。
  • Public Repositories:该仓库组将上述所有存储策略为 Release 的仓库聚合并通过统一的地址提供服务。

Nexus 仓库分类

Nexus 仓库按照类型(Type)区分,主要分为以下 3 个类型:

  • 代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。
  • 宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。
  • 仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。

为了更加直观的理解仓库组、代理仓库和宿主仓库的概念,我们通过下图展示它们的用途和区别。

nexus repository,# maven,maven,apache,java

图2: Nexus仓库分类

由上图可知:

  • Maven 可以直接从宿主仓库中下载构件。
  • Maven 也可以从代理仓库中下载构件,代理仓库会从远程仓库下载并缓存构件。
  • Maven 还可以从仓库组中下载构件,仓库组会从其包含的宿主仓库和代理仓库中获取构件。

Nexus创建仓库

首先,我们需要创建两个宿主仓库,分别用来存储从本地上传到 Nexus 的 Snapshot 和 Release 版本的构件,操作步骤如下。

1. 点击左边导航栏中的 Repositories,如下图。

nexus repository,# maven,maven,apache,java

图1:Nexus 导航

2. 点击 Nexus 仓库列表上方的 Add… 按钮,在下拉菜单中选择 Hosted Repository,如下图。

nexus repository,# maven,maven,apache,java

图2:添加宿主仓库

3. 在宿主仓库配置界面,填写对应信息,然后点击 Save 按钮进行保存,如下图。

nexus repository,# maven,maven,apache,java

图3:配置宿主仓库

宿主仓库配置如下:

配置 说明
Repository ID 仓库 ID。
Repository Name 仓库名称。
Repository Type 仓库的类型,如 hosted、proxy 等等。
Provider 用来确定仓库的格式,一般默认选择 Maven2。
Repository Policy 仓库的策略。
Default Local Storage Location 仓库默认存储目录,例如 D:\nexus-2.14.20-02-bundle\sonatype-work\nexus\indexer\bianchengbang_Snapshot_hosted_ctx。
Override Local Storage Location 自定义仓库存储目录。
Deployment Policy 仓库的部署策略。
Allow File Browsing 用来控制是否允许浏览仓库内容,一般选择 true。
Include in Search 用来控制该仓库是否创建索引并提供搜索功能。
Publish URL 用来控制是否通过 URL 提供服务。
Not Found Cache TTL 缓存某构件不存在信息的时间,默认取值为 1440,表示若某一个构件在仓库中没有找到,在 1440 分钟内再次接收到该构件的请求,则直接返回不存在信息,不会再次查找。

4. 查看 Nexus 仓库列表,可以看到自定义的宿主仓库已经创建完成,如下图。

nexus repository,# maven,maven,apache,java

图4:Nexus 仓库列表(猛击图片,查看原图)

重复以上步骤,再创建一个名称为 bianchengbang_Release_hosted ,策略为 hosted 的宿主仓库。

nexus repository,# maven,maven,apache,java

图5:Nexus 仓库列表-宿主仓库(猛击图片,查看原图)

创建 Nexus 代理仓库

下面我们创建一个代理仓库,用来下载和缓存中央仓库的构件,操作步骤如下。

点击 Nexus 仓库列表上方的 Add… 按钮,在下拉菜单中选择 Proxy Repository,如图 5 所示。

nexus repository,# maven,maven,apache,java

图5:添加代理仓库

在代理仓库配置界面,填写对应信息,然后点击 Save 按钮进行保存,如图 6 所示。

nexus repository,# maven,maven,apache,java

图6:Nexus 代理仓库配置界面

代理仓库配置中,仓库 ID、仓库名称、Provider、Policy 以及 Default Local Storage Location 等配置的含义与宿主仓库相同,不再赘述。需要注意的是,代理仓库的 Repository Type 的取值是 proxy。

代理仓库配置如下表。

配置 说明
Remote Storage Location 远程仓库或中央仓库的地址,它是 Nexus 代理仓库最重要得配置,必须输入有效值,通常取值为 https://repo1.maven.org/maven2/。
Download Remote Indexes 是否下载远程仓库的索引。
Auto Blocking Enabled 是否启用自动阻止,即当 Nexus 无法连接中央仓库或远程仓库时,是否一直等待。取值为 true 表示不再等待,直接通知客户端无法连接,并返回。
File Content Validation 是否启用文件内容校验。
Checksum Policy 配置校验和出错时的策略,用户可以选择忽略、警告、记录警告信息或拒绝下载等多种策略。
Artifact Max Age 构件缓存的最长时间,对于发布版本仓库来说,默认值为 -1,表示构件缓存后,就一直保存着,不再重新下载。对于快照版本仓库来说,默认值为 1440 分钟,表示每隔一天重新缓存一次代理的构件。
Metadata Max Age 仓库元数据缓存的最长时间。
Item Max Age 项目缓存的最长时间。

创建 Nexus 仓库组

下面我们将创建一个仓库组,并将刚刚创建的 3 个仓库都聚合起来,操作步骤如下。

点击仓库列表上方的 Add… 按钮,在下拉菜单中选择 Repository Group,如下图。

nexus repository,# maven,maven,apache,java

图7:Nexus 添加仓库组

在仓库组配置界面,填写对应信息,并将 bianchengbang_central_proxy、bianchengbang_Release_hosted 和 bianchengbang_Snapshot_hosted 3 个仓库添加到仓库组中,最后点击 Save 按钮进行保存,如下图。

nexus repository,# maven,maven,apache,java

图8:Nexus 仓库组配置

查看 Nexus 仓库列表,可以看到 bianchengbang_repository_group 仓库组已经创建完成,如下图。

nexus repository,# maven,maven,apache,java

图9:Nexus 仓库列表-仓库组(猛击图片,查看原图)

Nexus索引与构件搜索

我们知道,Maven 中央仓库为用户提供了多达数十万构件,而 Nexus 可以代理所有的远程仓库(包括 Maven 中央仓库),可见 Nexus 仓库中构件的数量相当庞大。用户想要在这么多构件中,快速的查找自己所需的构件,一个最直接有效的方式就是:搜索。

Nexus 作为一款成熟的仓库管理工具,它通过维护仓库的索引提供了构件搜索功能,以便帮助用户方便快速地找到所需构件。

我们将详细为您介绍 Nexus 索引以及构件搜索功能。

索引

Nexus 能够遍历仓库的所有内容,搜集它们的坐标,校验和以及所包含的 Java 类等信息,然后以索引( nexus-indexer) 的形式保存起来。Nexus 索引保存在 Nexus 安装目录下 \sonatype-work\nexus\indexer 目录中,该目录下每个子目录都代表 Nexus 中的一个仓库,用来存放各个仓库的索引 ,如下图所示。

nexus repository,# maven,maven,apache,java

图1:Nexus 索引目录

大多数的远程公共仓库(例如,中央仓库)都维护了一个这样的索引,因此本地的 Nexus 在下载到这个索引后,就能在此基础上为用户提供构件搜索和浏览等服务。需要注意的是,并不是所有的公共仓库都提供了索引 ,对于那些没有提供索引的仓库来说,我们是无法对其进行搜索的。

下载索引

Nexus 索引下载功能默认是关闭的,如果想在 Nexus 中搜索远程仓库中的构件,就需要先开启索引下载功能。

以 bianchengbang_central_proxy 代理仓库(代理 Maven 中央仓库)为例,在图 2 所示的位置就可以控制它的索引下载功能,true 表示开启索引下载,false 表示关闭索引下载。

nexus repository,# maven,maven,apache,java

图2:远程索引下载

开启索引下载功能后,点击导航栏中 Scheduled Tasks 链接,查看调度任务列表。若 Nexus 正在下载索引,我们就能看到如图 3 所示的任务,其任务状态为 Running。在索引下载完毕后,该任务就会消失。

nexus repository,# maven,maven,apache,java

图3:Nexus 调度任务列表(猛击图片,查看原图)

由于 Maven 中央仓库的内容较多,其索引文件比较大,因此 Nexus 下载该文件所需的时间较长,需要我们耐心等待。

索引下载完成后,点击仓库列表中的 bianchengbang_central_proxy 代理仓库,然后在列表下方选择 Browse Index 选项卡,我们可以看到该仓库内容的树形结构,如图 4 所示。

nexus repository,# maven,maven,apache,java

图4:Nexus 仓库索引树形结构图

构件搜索

Nexus 通过维护索引,为用户提供了关键字搜索、类名搜索、坐标搜索等多种搜索功能,通过这些功能,页面中能够清晰地展示出结果构件的坐标以及所属仓库。用户可以直接下载相应的构件,也可以直接复制构件的 XML 依赖声明,到项目中使用。

在 Nexus 界面左边导航栏中有一个搜索框,在搜索框内输入所需构件的关键字,单击搜索按钮就能快速得到搜索结果,如图 5 所示。

nexus repository,# maven,maven,apache,java

图5:Nexus 搜索功能(猛击图片,查看原图)

搜索结果页中的每一行代表一类构件,其中包含了 Group、Artifact、版本、流行版本、以及下载链接等信息。点击其中某一行,下方就会出现该构件的详细信息,其中不但包含构件的坐标等基本信息,还包含一段 XML 依赖声明,我们可以将这段 XML 依赖声明直接复制到项目的 POM 中使用,如图 6 所示。

nexus repository,# maven,maven,apache,java

图6:Nexus 搜索结果详情

点击右侧的 Artifact 选项卡,还能看到构件的大小、上传时间、最后修改时间、仓库中的相对位置、校验和等信息,如图 7 所示。

nexus repository,# maven,maven,apache,java

图7:Nexus 搜索详情页 Artifact

除了关键字搜索外,Nexus 还提供了一些高级搜索功能,例如类名搜索、GAV 搜索以及“校验和”搜索。我们可以通过点击搜索页左上角的下拉菜单,选择高级搜索功能。

nexus repository,# maven,maven,apache,java

图8:Nexus 高级搜索功能

Nexus 还具有以下高级搜索功能:

  • 类名搜索(Keyword Search):搜索包含某个 Java 类的构件。
  • GAV 搜索(GAV Search):通过设置 Group、Artifact、版本等信息进行搜索。
  • 校验和搜索(Checksum Search):通过使用“校验和”搜索构件。

这些搜索功能的使用都十分的简单,我们可以根据自己的需求选择合适的搜索功能。

从Nexus下载构件

Nexus 作为最流行的 Maven 私服之一,使用它主要目的之一:代理远程仓库,即当 Maven 需要下载构件到本地仓库使用时,不再请求外部的远程仓库,而直接从 Nexus 中下载。我们将介绍如何配置 Maven 从 Nexus 下载构件。

将 Nexus 的代理仓库配置到 Maven 项目中,用它们代替外部的远程仓库,即可实现 Maven 从 Nexus 下载构件。

  • 在 pom.xml 中配置
  • 在 setting.xml 中配置

在 pom.xml 中配置

在 Maven 项目的 pom.xml 中增加以下配置,可以为当前项目配置 Nexus 上的 bianchengbang_central_proxy 代理仓库。

<!--声明一个或多个远程仓库  -->
<repositories>
    <!-- 声明一个 Nexus 私服上的仓库  -->
    <repository>
        <!--仓库id  -->
        <id>nexus</id>
        <!-- 仓库的名称 -->
        <name>nexus</name>
        <!--仓库的地址  -->
        <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
        <!-- 是否开启该仓库的 release 版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<!-- 声明一个或多个远程插件仓库 -->
<pluginRepositories>
    <!--声明一个 Nexus 私服上的插件仓库  -->
    <pluginRepository>
        <!--插件仓库 id -->
        <id>nexus</id>
        <!--插件仓库 名称 -->
        <name>nexus</name>
        <!-- 配置的插件仓库的地址 -->
        <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
        <!-- 是否开启该插件仓库的 release 版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

其中,在 repositories 元素下可以使用 repository 子元素声明一个或多个远程仓库,一个 repository 元素对应一个远程仓库。

repository 各个子元素含义如下表。

子元素 含义
id 仓库的唯一标识。需要注意的是,Maven 中央仓库的 id 为 central,如果其他的仓库也使用该 id,就会覆盖中央仓库的配置。
name 仓库的名称。
url 仓库的地址,该地址一般都是基于 HTTP 协议的,通过浏览器即可访问该地址,浏览仓库中的构件。
releases/snapshots 用来控制 Maven 对于发布和快照版本构件的下载。它们都有一个 enabled 子元素,enabled 的取值为 true,表示开启发布版或快照版的下载支持,否则表示关闭下载支持。

在 pluginRepositories 元素下可以使用 pluginRepository 子元素声明一个或多个远程插件仓库(包括私服上的仓库),一个 pluginRepository 元素对应一个远程插件仓库。pluginRepository 下所有子元素的含义均与与 repository 的子元素相同,这里就不再做过多赘述了。
示例 1
将以上配置加入 Maven 项目 Root 的 POM 文件中,并手动清空本地仓库的所有依赖构件(目的是为了让 Maven 重新获取构件)。

打开命令行窗口,跳转到 Root 所在的目录下,执行以下 mvn 命令。

mvn clean install

执行结果如下。

nexus repository,# maven,maven,apache,java

图1: 使用 Nexus 私服构建结果

由图 1 的构建过程可以看出,Root 项目构建所需的构建是从 Nexus 私服的 banchengbang_central_proxy 代理仓库中下载的,而不是从 Maven 中央仓库去下载。
在 setting 中配置
在 pom.xml 中配置 Nexus ,只对当前项目有效,在实际应用中,我们往往希望能够通过一次配置就能让本机中的所有 Maven 项目都使用 Nexus。此时,您可能会想到在 Maven 的 setting.xml 文件中进行配置,但 setting.xml 是不支持直接配置 repositories 和 pluginRepositories 。所幸 Maven 提供了 profile 机制,能够让我们将仓库配置放在 profile 中。

<profiles>
    <profile>
        <id>nexus</id>
        <!--声明一个或多个远程仓库  -->
        <repositories>
            <!-- 声明一个 Nexus 私服上的仓库  -->
            <repository>
                <!--仓库id  -->
                <id>nexus</id>
                <!-- 仓库的名称 -->
                <name>nexus</name>
                <!--仓库的地址  -->
                <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
                <!-- 是否开启该仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <!-- 声明一个或多个远程插件仓库 -->
        <pluginRepositories>
            <!--声明一个 Nexus 私服上的插件仓库  -->
            <pluginRepository>
                <!--插件仓库 id -->
                <id>nexus</id>
                <!--插件仓库 名称 -->
                <name>nexus</name>
                <!-- 配置的插件仓库的地址 -->
                <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
                <!-- 是否开启该插件仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeProfiles>

以上配置中使用了一个 id 为 nexus 的 profile,这个 profile 中包含了与仓库相关的配置,同时配置中还使用了一个 activeProfiles 元素将 id 为 nexus 的 profile 激活。当本机有 Maven 项目构建时,profile 中的仓库配置就会应用到项目中。
示例 2
将以上配置分别添加到 Maven 安装目录\conf 和本地仓库目录下的 setting.xml 中,并将 Root 项目 POM 文件中的 repositories 和 pluginRepositories 等仓库设置删除。

打开命令行窗口,跳转到 Root 项目下,执行以下 mvn 命令。
mvn clean install

执行结果如下。

nexus repository,# maven,maven,apache,java

图2:Nexus 全局配置仓库
setting.xml 中添加镜像
Nexus 私服通常会与镜像(mirror)结合使用,使 Nexus 成为所有远程仓库的私服,这样不仅可以从 Nexus 中获取所有所需构件,还能将配置集中到 Nexus 私服中,简化 Maven 本身的配置。

我们可以创建一个匹配任何仓库的镜像,镜像的地址为 Nexus 中仓库的地址,这样 Maven 对于任何构件的下载请求都会被拦截跳转到 Nexus 私服中,其具体配置如下。

<mirrors>
    <mirror>
        <id>nexus</id>
        <name>nexus name</name>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8082/nexus/content/groups/bianchengbang_repository_group/</url>
    </mirror>
</mirrors>
<profiles>
    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>central</id>
                <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>http://localhost:8082/nexus/content/repositories/bianchengbang_central_proxy/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeProfiles>

仓库和插件仓库的配置中,它们的 id 取值都是 central,即它们的设置覆盖了 Maven 中央仓库,但此时这里的 URL 已经无法起到任何作用,因为镜像的匹配规则是 *,所有的请求都已经被拦截,跳转到 Nexus 私服的地址。

部署构件到Nexus

如果仅仅是为了代理远程的公共仓库,那么 Nexus 的代理仓库就完全能够满足需要,但是我们知道,Nexus 除了代理仓库外,还有另一种仓库:宿主仓库。

宿主仓库的主要作用是存储公司或组织内部的构件,以及一些无法从公共仓库获取的第三方构件(JDBC 驱动),供用户下载使用。用户可以通过配置 Maven 将构件自动部署到 Nexus 宿主仓库,也可以在 Nexus 界面手动上传构件。

使用 Maven 部署构件到 Nexus

日常开发中,快照版本构件可以直接部署到 Nexus 中策略为 Snapshot 的宿主仓库中,而最终发布的版本则应该部署到 Nexus 中策略为 Release 的宿主仓库中。

使用 Maven 将构件部署到 Nexus 宿主仓库中主要分为 3 步:

  1. 配置项目的 POM 文件。
  2. 在 setting.xml 中配置认证信息。
  3. 使用 mvn 命令部署构件。

下面我们通过一个实例来详细介绍如何使用 Maven 部署构件到 Nexus 宿主仓库。

1. 配置项目的 POM 文件

创建一个名为 test-upload-snapshot 的 Maven 项目,并在其 POM 文件中添加如下配置。

<project>
    ...
    <distributionManagement>
        <repository>
            <id>bianchengbang_Release_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Release_hosted/</url>
        </repository>
        <snapshotRepository>
            <id>bianchengbang_Snapshot_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hosted/</url>
        </snapshotRepository>
    </distributionManagement>
</project>

以上配置说明如下:

  • distributionManagement 元素:负责将指定的构件部署到 Nexus 指定的仓库中。
  • repository 元素:distributionManagement 的子元素,用于定义部署 Release 版本的构件被部署的仓库。它有 2 子元素:id 和 url ,其中 id 为 Nexus 仓库的唯一标识,url 为 Nexus 宿主仓库的 url。
  • snapshotRepository 元素:distributionManagement 的子元素,用于定义部署 Snapshot 版本的构件被部署的仓库。它也有 2 子元素:id 和 url ,且与 repository 中含义一致。

2. 在 setting.xml 中配置认证信息

最初版本的 Nexus 没有为宿主仓库提供任何的安全措施。如果宿主仓库开启了部署功能,任何人可以连接并部署构件至这个仓库,这显然是极不安全的。因此,现在的 Nexus 中增加了权限认证,Nexus 对于匿名用户是只读的,若想部署构件到 Nexus 中,则需要在 setting.xml 中配置如下认证信息。

<settings>
    ...
    <servers>
        <server>
            <id>bianchengbang_Release_hosted</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>bianchengbang_Snapshot_hosted</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
</settings>

注意:以上配置中,server 元素中的 id 必须和 pom.xml 中 distributionManagement 元素对应仓库的 id 保持一致。Maven 在部署构件时,会先根据 id 查找用户名称和密码进行认证和登录,然后将构件部署到对应得宿主仓库。

3. 使用 mvn 命令部署构件

完成以上配置之后,就可以使用 Maven 命令将构件部署到宿主仓库了,操作步骤如下。

1)打开命令行窗口,跳转到 test-upload-snapshot 项目得目录下,执行如下 Maven 命令。
mvn clean deploy
2) Maven 命令执行结果如下图。
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< net.biancheng.www:test-upload-snapshot >---------------
[INFO] Building test-upload-snapshot 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test-upload-snapshot ---
[INFO] Deleting D:\eclipse workSpace 3\test-upload-snapshot\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test-upload-snapshot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ test-upload-snapshot ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test-upload-snapshot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ test-upload-snapshot ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ test-upload-snapshot ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ test-upload-snapshot ---
[INFO] Building jar: D:\eclipse workSpace 3\test-upload-snapshot\target\test-upload-snapshot-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ test-upload-snapshot ---
[INFO] Installing D:\eclipse workSpace 3\test-upload-snapshot\target\test-upload-snapshot-0.0.1-SNAPSHOT.jar to D:\myRep
ository\repository\net\biancheng\www\test-upload-snapshot\0.0.1-SNAPSHOT\test-upload-snapshot-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\eclipse workSpace 3\test-upload-snapshot\pom.xml to D:\myRepository\repository\net\biancheng\www\te
st-upload-snapshot\0.0.1-SNAPSHOT\test-upload-snapshot-0.0.1-SNAPSHOT.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ test-upload-snapshot ---
Downloading from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_
hosted/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_h
osted/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml (787 B at 9.2 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.jar
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.jar (2.1 kB at 28 k
B/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.pom
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.pom (2.4 kB at 36 k
B/s)
Downloading from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_
hosted/net/biancheng/www/test-upload-snapshot/maven-metadata.xml
Downloaded from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_h
osted/net/biancheng/www/test-upload-snapshot/maven-metadata.xml (297 B at 11 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml (787 B at 14 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/maven-metadata.xml
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/maven-metadata.xml (297 B at 5.2 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.342 s
[INFO] Finished at: 2021-03-22T11:03:44+08:00
[INFO] ------------------------------------------------------------------------

在 Nexus 界面的仓库列表选中 bianchengbang_Snapshot_hosted 宿主仓库,在下方的 Browse Index 选项卡中,可以看到 test-upload-snapshot 构件已经被部署到该仓库中,如图 1 所示。

nexus repository,# maven,maven,apache,java

图1:使用 Maven 部署构件到 Nexus

手动上传构件

有些 Jar 文件(如 Oracle 的 JDBC 驱动)由于许可证等原因,无法存放在公开仓库中。此外,还有一些小型的开源项目,它们没有将自己的构件分发到公共仓库中,也没有维护自己的仓库,因此这些构件是无法从公共仓库中获得的。若 Maven 项目中需要这类构件,我们就需要将构件下载到本地,然后手动上传到 Nexus 私服。

我们还是以 Maven 项目 App-Core-lib 为例,将其打包后手动上传到 Nexus 内置宿主仓库 3rd party 中,具体步骤如下。

1. 打开命令行窗口,跳转到 App-Core-lib 的目录下,执行如下 mvn 命令,对项目进行打包。

mvn clean package

2.打包完成后,进入 App-Core-lib\target 目录,可以看到 Maven 已经将该项目打包成了一个 jar 文件,如图 2 所示。

nexus repository,# maven,maven,apache,java

图2:Maven 打包生成 jar 文件

3. 在 Nexus 界面的仓库列表中选择 3rd party 仓库,在下方选择 Artifact Upload 选项卡,其中 GAV Definition 用于定义上传构件的坐标信息。

GAV Definition 中提供了两种定义构件坐标的方式:

  • 若该构件通过 Maven 构建产生的,则可以选择 From POM,Nexus 会自动从 POM 中获取构件的坐标。
  • 若该构件来自第三方,则只能选择 GAV Parameters,手动定义构件的坐标。

以上 2 种方式操作时会略有不同,下面我们分别对它们进行介绍。
From POM
若该构件是通过 Maven 构建产生的,那么可以在 GAV Definition 下拉列表中,选择 From POM,然后指定该构件所属项目的 pom.xml,Nexus 会自动从 pom.xml 中获取构件的坐标。最后点击页面最下方的 Upload Artifact(s) 按钮,将构件上传到仓库中,如图 3 所示。

nexus repository,# maven,maven,apache,java

图3:Nexus 手动上传构件
GAV Paramters
若构件不是通过 Maven 构建的,而是来自第三方(例如 Oracle 的 JDBC 驱动),则只能在 GAV Definition 下拉列表中,选择 GAV Parameters 手动定义构件的坐标。

定义好坐标后,点击 Select Artifact(s) to Upload… 按钮选择要上传的构件,然后点击 Add Artifact 按钮将其加入上传列表中。最后点击页面最下方的 Upload Artifact(s) 按钮,将构件上传到仓库中,如图 4 所示。

nexus repository,# maven,maven,apache,java

图4:Nexus 第三方构件手动上传

4. 在仓库列表中选中 3rd party 宿主仓库,在下方的 Browse Index 选项卡中,可以看到构件已经被部署到该仓库中,如图 5 所示。

nexus repository,# maven,maven,apache,java

图5:第三方构件手动上传到Nexus

Nexus3的使用

目前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。

目前使用最多的,运行最稳定是 Nexus 2,但随着 Nexus 3 对 Maven 的支持越来越稳定,很多公司和组织都陆续开始使用 Nexus 3。

本节我们将介绍 Nexus 3 的安装和访问过程。

下载 Nexus 3

1. 进入 Nexus 3.x 下载页面(目前最新版是 3.30.0-01),根据操作选择相应的版本进行下载。

nexus repository,# maven,maven,apache,java

图1:Nexus 下载页面

2. 将下载的安装包解压到本地,可获得 nexus-3.30.0-01 和 sonatype-work 两个目录,如图 2。

nexus repository,# maven,maven,apache,java

图2:Nexus 解压
其中:

  • nexus-3.30.0-01:此目录包含 Nexus 运行所需要的文件以及所有必需的其他组件,如启动脚本、依赖 jar 包等。
  • sonatype-work:该目录包含所有由 Nexus 存储和管理的仓库,组件和其他数据。

启动 nexus 服务

我们可以在 nexus-3.30.0-01\bin 目录下发现一个名称位 nexus.exe 的可执行文件,它是在 Windows 平台上运行 Nexus 的启动脚本,该脚本包含了启动服务、停止服务、创建服务和删除服务等命令。

打开命令行窗口,跳转到 nexus-3.30.0-01\bin 目录下,执行以下命令,启动 Nexus 服务。

nexus /run

执行结果结果如图 3 所示,则表示 Nexus 启动完成。

nexus repository,# maven,maven,apache,java

图3:Nexus 3 启动完成

访问 nexus 3.x

启动完成后,在浏览器地址栏输入 http://localhost:8081/,访问 Nexus 界面,如图 4 所示。

nexus repository,# maven,maven,apache,java

图4:Nexus 3 用户界面

点击 Nexus 3.x 首页右上角的“Sign in”按钮,在登录页面输入用户名和 密码(默认用户名为 admin,默认密码则保存在 /sonatype-work/nexus3 目录下的 admin.password 文件中),点击“Sign in”按钮登录,如图 5 所示。

nexus repository,# maven,maven,apache,java

图5:Nexus 3 登录界面

登录成功后,结果如图 6 所示。

nexus repository,# maven,maven,apache,java

图6:Nexus 3 登录成功

Nexus离线更新中央仓库索引

我们知道 Nexus 可以远程下载和缓存中央仓库索引,但是对于国内用户来说,Nexus 远程更新索引使用的站点位于国外且部分索引文件较大,经常会出现下载速度缓慢或索引文件不完整等情况。下面我们将介绍一种更加快捷可靠的索引更新方式:离线更新中央仓库索引。

离线更新中央仓库索引,顾名思义,就是直接将索引文件下载,然后拷贝至 Nexus 工作目录中,以达到离线更新索引的目的。

离线更新中央仓库索引主要分为以下 3 步:

  • 文件下载
  • 解压
  • 更新并验证索引

文件下载

首先,我们需要下载以下 3 个文件:

  • nexus-maven-repository-index.gz
  • nexus-maven-repository-index.properties
  • indexer-cli-5.1.1.jar

1. 浏览器访问 https://repo.maven.apache.org/maven2/.index/ ,下载 nexus-maven-repository-index.gz 和 nexus-maven-repository-index.properties 两个文件(一般位于列表的末尾),如图 1 所示。

nexus repository,# maven,maven,apache,java

图1:Nexus 中央仓库离线索引下载列表

2. 浏览器访问 http://mvnrepository.com/,搜索 Indexer CLI,选择 Maven :: Indexer CLI,如图 2 所示。

nexus repository,# maven,maven,apache,java

图2:Nexus 索引生成器

3. 建议选择 5.1.1 版本,如图 3 所示。

nexus repository,# maven,maven,apache,java

图3:选择 Indexer CLI 版本

4. 在 Indexer CLI » 5.1.1 版本详情页,点击 View All,查看该版本包含的所有文件。

nexus repository,# maven,maven,apache,java

图4:Nexus indexer-cli 5.1.1 详情

5. 在文件列表中,点击 indexer-cli-5.1.1.jar ,下载该文件,如图 5 所示。

nexus repository,# maven,maven,apache,java

图5:Nexus indexer-cli 文件列表

解压

1. 将 nexus-maven-repository-index.gz 、nexus-maven-repository-index.properties 以及 indexer-cli-5.1.1.jar 三个文件都存放到 index(目录的名称及位置均为自定义,没有特殊规定)目录下,如图 6 所示。

nexus repository,# maven,maven,apache,java

图6:Nexus 中央仓库离线索引文件

2. 打开命令行窗口,跳转到 index 目录,执行以下命令,解压索引文件。

java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer

解压过程大约需要 10 分钟左右,请耐心等待,解压完成后,结果如图 7 所示。

nexus repository,# maven,maven,apache,java

图7:Nexus 中央仓库离线索引解压

3. 解压完成后,在 index 中会生成一个名为 indexer 的目录,该目录中存放的就是中央仓库离线索引文件,如图 8 所示。

nexus repository,# maven,maven,apache,java

图8:Nexus 离线索引文件

更新并验证索引

1. 将所有索引文件(不包含目录)全部拷贝到“Nexus\sonatype-work\nexus\indexer\central-ctx”目录中,如图 9 所示。

nexus repository,# maven,maven,apache,java

图9:Nexus 中央仓库索引目录

2. 重启 Nexus,在仓库列表中,选中 Central 代理仓库,然后点击 Browse Index 选项卡,结果如图 10 所示。

nexus repository,# maven,maven,apache,java

图10:Nexus 离线索引

3. 点击 browse Remote 选项卡,结果如图 11 所示。

nexus repository,# maven,maven,apache,java

图11:Nexus 远程索引

4. 对比 Browse Index 和 Browse Remote 中的索引,若两者完全一致,则表示离线索引更新成功。

需要注意的是,目前只有 Nexus 2.x 可以通过以上方式离线更新中央仓库索引,Nexus 3.x 暂不支持该功能。若想在 Nexus
3.x 中使用离线索引,我们建议您先在 Nexus 2.x 中离线更新索引后,再将数据迁移到 Nexus 3.x 中。文章来源地址https://www.toymoban.com/news/detail-798379.html

到了这里,关于【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven私服搭建Nexus3

    下载地址 :https://help.sonatype.com/en/download.html 备用下载链接,部分已经失效了 解压后会有两个文件夹: nexus-3.20.1-01 sonatype-work 访问地址配置路径 nexus-3.20.1-01binnexus.vmoptions 默认配置大小为2703m,两个多G,内存不够的可以修改一下。 如果是docker部署修改配置没用,要加上-e参

    2024年02月22日
    浏览(42)
  • 【Maven】常用命令、插件管理、私服nexus

       Maven 提供了一系列常用命令,用于构建、测试和管理项目。以下是一些常用的 Maven 命令示例:    mvn clean : 清除项目中生成的输出目录(如 target 目录)。    mvn compile : 编译项目源代码。    mvn test : 运行项目的单元测试。    mvn package : 打包项目,生成可发布的

    2024年02月14日
    浏览(50)
  • Nexus私服,使用Maven上传到仓库时提示xx/metadata.xml响应码 502

            宝塔、使用宝塔环境安装的Nginx、使用Nginx转发到Nexus。     Nginx转发时,Nexus响应错误码为404,但是Nginx返回给客户端的响应码是502。     * 如果响应码是404则表示没有,Maven会按照服务器端没有依赖库处理,但是返回的502表示服务器错误maven则不再继续向后处理。     

    2024年02月21日
    浏览(47)
  • 【docker】centos 使用 Nexus Repository 搭建私有仓库

    Nexus Repository 是一种流行的软件仓库管理工具,它可以帮助您搭建私有仓库,以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repository搭建本地Docker仓库的步骤如

    2024年01月23日
    浏览(56)
  • Docker本地部署Nexus Maven私服并实现远程访问管理界面

    本文主要介绍如何在Linux中使用Docker一键部署Nexus Maven私有仓库工具并结合Cpolar内网穿透实现远程访问Nexus进行管理。 Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可以作为Maven仓库的服务器。Nexus提供了一个集中式的位置,用

    2024年01月19日
    浏览(46)
  • 新手入门Win-Server下Maven私服nexus的搭建、使用与配置,这一篇就够了

    近期项目上有需要搭建一个maven私服仓库,于是自己试着弄了一下,踩了一些坑,特此想发布一篇教程,并提供资源,方便大家遇到类似的情况时能够快速完成工作; 关于nexus的介绍,这里不多废话了,感兴趣的可以去官网自己查看。 一、先要去下载nexus安装包 https://www.son

    2024年02月02日
    浏览(40)
  • nexus搭建maven私有仓库

    Nexus 在企业开发中还是比较常用的私有仓库管理工具,一般把公司内部的Maven jar 包或npm包上传到仓库中,有效的对包文件进行管理。 Nexus 至少需要 2G 以上的内存 安装nexus之前首先安装配置好 JDK 环境 和 Maven环境 1、Linux环境安装openJDK 2、Centos7.3安装maven并配置加速镜像源 ne

    2024年02月12日
    浏览(45)
  • Maven私有仓库搭建与使用【nexus的配置与使用】【Windows】

    在公司开发测试过程中,内网团队使用一个服务来节省外网宽带以及缓存Maven Respository中没有的jar包 允许上传和下载私有库,并且不被外部访问,安全稳定 官网下载地址,但是速度很慢,可以使用以下链接获取:添加链接描述 解压好下载的nexus压缩包,会有以下两个文件:

    2023年04月08日
    浏览(54)
  • docker安装Nexus,maven私服

    nexus作为私服的maven仓库,在企业级应用中,提供了依赖来源的稳定性,为构建庞大的微服务体系,打下基础 这里如果不设置,nexus在容器里会创建不了文件锁,导致异常 -e INSTALL4J_ADD_VM_PARAMS=“-Xms512m -Xmx512m” ,留意这条指令,主要用于限制内存的使用 通过GPT可以简单的将

    2024年04月08日
    浏览(39)
  • Maven发布项目到Nexus私服

    在项目pom.xml中文件中的仓库配置,Nexus私服如何搭建在这里不介绍了可自行百度。 在maven的settings.xml文件中添加服务器配置,仓库id、用户名和密码,id需要与上面pom.xml中的仓库id一致,两个密码都是nexus登录密码。 再执行mvn deploy,也可以直接使用idea执行。

    2024年02月14日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包