我是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
。
/%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同样,缓存文件将自动实现。(不需要使用离线模式)