私有制件仓库
本章节我们介绍如何搭建私有 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-proxy
和jmix-premium-proxy
移入 Members 列表。
-
-
点击 Create repository。
-
Jmix 项目配置
在项目的 build.gradle
文件中,将 repositories
部分替换为如下内容:
repositories {
mavenCentral()
maven {
allowInsecureProtocol true
url 'http://localhost:8081/repository/jmix-proxy'
}
}
注意,需要将 http://localhost:8081
替换成你实际配置的仓库地址。