我可以通过预下载这些jar文件到本地来阻止gradle下载jar文件吗?



我是Gradle和Minecraft建模的新程序员。我试着设置Minecraft forgebuild.gradle文件使用命令

./gradlew genVSCodeRuns

在VSCode的命令行。每次在下载两个所需文件的过程中失败时,都会出现这样的错误消息:

> Could not download icu4j-66.1.jar (com.ibm.icu:icu4j:66.1)
> Could not get resource 'https://maven.minecraftforge.net/com/ibm/icu/icu4j/66.1/icu4j-66.1.jar'.
> Premature end of Content-Length delimited message body (expected: 12,935,630; received: 6,397,856)

我认为这是由于互联网的问题,我试图下载两个所需的jar文件到本地,并将它们保存在libs文件夹。然而,当我试图在Gradle开始使用以下脚本自动下载它们之前实现它们时,Gradle一直在下载它们。

dependencies {
implementation fileTree(dir:'libs',includes:['*jar'])
}

我现在想知道什么是正确的脚本使用这些下载的jar文件作为缓存,并防止build.gradle从下载它们。

我看了类似的问题,不知道在哪里放置我的缓存文件。只有正确放置缓存文件,我才能离线使用

我自己想出了解决办法。

目标是将下载的文件添加到本地缓存,以命令Gradle使用该文件缓存,而不是从互联网重新下载文件。

在此之前,我们需要确保文件的大小与所需的大小相同。。因为我的网络连接不好,我曾经只下载了6mb,而真正的大小是18mb。

要将其添加到本地缓存,请按照以下步骤操作。

首先,添加环境变量GRADLE_USER_HOME

然后,jar文件缓存将存储在路径:
/%GRADLE_USER_HOME%/caches/modules-2/files-2.1/$package$/$project$/$version$/$sha1$/$proj-ver.jar$/

例如,对于icu4j-66.1.jar从URL 'https://maven.minecraftforge.net/com/ibm/icu/icu4j/66.1/icu4j-66.1.jar'将被存储在以下路径:

%GRADLE_USER_HOME%/caches/modules-2/files-2.1/com.ibm.icu/icu4j/66.1/$sha1$/icu4j-66.1.jar

之后,我们需要获取sha1代码。我们可以在build.gradle中通过https://gist.github.com/dagezi/9594839#file-calcsha1-gradle实现Gradle代码。通过创建一个新任务并打印出获取的sha1代码。

然后运行build.gradle同样,缓存文件将自动实现。(不需要使用离线模式)

最新更新