私有制件仓库

本节介绍如何搭建私有 Maven 仓库并代替 Jmix 公共仓库。私仓可用于缓存框架构件及其传递依赖项。如果网络不稳定或速度较慢,建议使用此方法。尽管 Gradle 在开发人员机器上缓存了下载的构件,但仍然需要不时连接到构件仓库,例如当首次构建或升级框架的版本时。

安装仓库管理软件

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

下面的安装说明是以 Linux 为例。

  1. https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3 下载 Nexus OSS repository manager,并解压至 ~/work/nexus 文件夹。

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

  3. 打开 ~/.bashrc 文件并添加以下内容:

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

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

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

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

  5. 点击右上角的 Sign in

  6. 使用 admin 用户登录,密码保存在 ~/work/nexus/sonatype-work/nexus3/admin.password 文件中。

  7. 修改密码。

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

创建 Jmix 代理仓库

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

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

  2. 为 Jmix 公共仓库创建代理:

    • 点击 Create repository 按钮。

    • 选择 maven2 (proxy) 类型。

    • 填写内容如下:

      • Name: jmix-public-proxy

      • Version policy: Mixed

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

    • 点击 Create repository

  3. 为 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

  4. 创建一个分组,这样可以使用同一个 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 替换成你实际配置的仓库地址。