Gradle是否存储在Nexus仓库中?

3

这是用于下载 Gradle 本身的。我正在尝试尽可能轻松地将其缓存到企业网络中。如果在上游的 Nexus 存储库中可用 Gradle,则可以将 wrapper 的 distributionUrl 指向内部 Nexus。

Maven 可以在 Maven 中心获取,这很方便,我也在寻找类似的解决方案。 https://search.maven.org/search?q=g:org.apache.maven%20a:apache-maven

我确实找到了,但我想知道是否有更官方的解决方案。 https://github.com/hazendaz/gradle https://search.maven.org/search?q=g:com.github.hazendaz.gradle%20a:gradle

感谢您的时间。

3个回答

4
当使用 Nexus 时,您可以为 https://services.gradle.org/distributions 创建一个原始(代理)存储库。这将代理所有请求。
在此示例中,该存储库的名称为 gradle-distributions。这使您可以使用:
curl https://nexus.example-organisation.com/repository/gradle-distributions/gradle-6.9.1-wrapper.jar.sha256
e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637

改为:

curl https://services.gradle.org/distributions/gradle-6.9.1-wrapper.jar.sha256
e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637

因此,在gradle-wrapper.properties中,您可以使用:

distributionUrl=https://nexus.example-organisation.com/repository/gradle-distributions/gradle-6.9.1-bin.zip

2
很遗憾,Gradle Wrapper JAR并没有像Nexus这样的Maven仓库发布。
您可以在此处看到实际下载发生的位置。进一步挖掘,您可以在此处看到Gradle使用较低级别的Java机制来下载Wrapper。
所有Gradle分发版都可以在https://services.gradle.org/distributions/找到。如果您查看版本信息,则有一个包含最新版本发布的JSON文件。我对管理Nexus不是很熟悉,但如果您可以创建某种插件来轮询该版本信息,则可以在Nexus中下载它(如果尚未可用/已缓存)。

0
M.P. Korstanje提供的解决方案对我来说并不直接有效,因为我的Nexus版本不允许我代理原始网站。然而,我通过创建一个托管的“站点”存储库,并使用此脚本将Gradle bin zips上传到我的存储库,成功实现了类似的功能:
#/bin/bash

#
# This helper script will upload any file to 'Gradle Distributions' Nexus repo
#

NEXUS_ADMIN_USER=$1
GRADLE_BIN_ZIP_FILE=$2

if    [ -z "$NEXUS_ADMIN_USER" ] \
   || [ -z "$GRADLE_BIN_ZIP_FILE" ]
then
  echo "$0 <NEXUS_ADMIN_USER> <GRADLE_BIN_ZIP_FILE>"
  exit 1
fi

curl -v \
    --user $NEXUS_ADMIN_USER \
    --upload-file $GRADLE_BIN_ZIP_FILE \
    http://nexus-host:8081/nexus/content/sites/gradle-distributions/$GRADLE_BIN_ZIP_FILE

现在所有已批准的Gradle发行版都可以在由Nexus管理的URL上获得:

http://nexus-host:8081/nexus/content/sites/gradle-distributions/
  ├── gradle-3.5.1-bin.zip
  ├── gradle-7.4.1-bin.zip
  ├── gradle-7.4.2-bin.zip
  └── upload_gradle_distro.sh

最后一步是修改gradle/wrapper/gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=http\://nexus-host\:8081/nexus/content/sites/gradle-distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接