私有制件仓库

本章节我们介绍如何搭建私有 Maven 仓库,以及如何使用私仓替代 Jmix 公共仓库。其目的是缓存 Jmix 框架的制件和传递依赖的库,因此适合这些场景:

  • 不打算续订 Jmix 企业版订阅,但是未来仍然需要使用已经下载的制件构建应用程序。

  • 网络情况不佳。尽管 Gradle 会在开发者机器缓存下载的制件,但是仍然需要不时地连接仓库,比如在第一次构建或者切换至新框架版本时。

安装仓库管理软件

首先,需要在你的私有网络中安装并运行一个仓库管理软件。

下面的安装说明是以 Linux 操作系统为例。

  • https://help.sona类型。com/repomanager3/product-information/download/download-archives---repository-manager-3 下载 Nexus OSS 仓库管理软件,并解压至 ~/work/nexus 文件夹。

  • 下载 JDK 8(比如:https://adoptium.net/temurin/releases/?version=8[^]),解压至 ~/work/jdk8 文件夹。

  • ~/.bashrc 文件添加以下内容:

    export INSTALL4J_JAVA_HOME=/home/$USER/work/jdk8

    INSTALL4J_JAVA_HOME 这个环境变量指向 JDK 8 的安装目录,在运行 Nexus 时需要。

  • 打开终端,切换至 ~/work/nexus/nexus-<version>/bin 并执行:

    ./nexus run
  • 在浏览器打开 http://localhost:8081

  • 点击右上角的 Sign in

  • 输入 admin 的登录凭证,用户名和密码保存在 ~/work/nexus/sonatype-work/nexus3/admin.password 文件中。

  • 修改密码。

  • Configure Anonymous Access 这一步中,启用仓库的匿名访问。这样能简化项目的配置。

创建 Jmix 代理仓库

Nexus 运行起来后,通过客户端配置代理仓库。

  • 切换至管理界面(点击顶部的齿轮按钮),并打开 Repositories 菜单。

  • 为 Jmix 公共仓库创建代理:

    • 点击 Create repository 按钮。

    • 选择 maven2 (proxy) 类型。

    • 填写内容如下:

      • Name: jmix-public-proxy

      • Version policy: Mixed

      • Remote storage: https://global.repo.jmix.io/repository/public

    • 点击 Create repository

  • 为 premium Jmix 仓库创建代理:

    • 点击 Create repository 按钮。

    • 选择 maven2 (proxy) 类型。

    • 填写内容如下:

      • Name: jmix-premium-proxy

      • Version policy: Mixed

      • Remote storage: https://global.repo.jmix.io/repository/premium

      • HTTP 部分,启用 Authentication 并在 Username 字段输入 Jmix 企业版许可秘钥的前半部分,在 Password 字段输入后半部分。例如,如果你的秘钥是 111111222222-abcdefabcdef,那么用户名是 111111222222,密码是 abcdefabcdef

    • 点击 Create repository

  • 创建一个分组,这样可以使用同一个 URL 访问两个代理仓库:

    • 点击 Create repository 按钮。

    • 选择 maven2 (group) 类型。

    • 填写内容如下:

      • Name: jmix-proxy

      • Version policy: Mixed

      • Group → Member repositories,将 jmix-public-proxyjmix-premium-proxy 移入 Members 列表。

    • 点击 Create repository

Jmix 项目配置

在项目的 build.gradle 文件中,将 repositories 部分替换为如下内容:

repositories {
    mavenCentral()
    maven {
        allowInsecureProtocol true
        url 'http://localhost:8081/repository/jmix-proxy'
    }
}

注意,需要将 http://localhost:8081 替换成你实际配置的仓库地址。