☰
Kotlin 离线构建实战手册:依赖一次下载,全程断网也能编译
2026/10/27 7:25:45 网站建设 项目流程

Kotlin 离线构建实战手册:依赖一次下载,全程断网也能编译

【免费下载链接】kotlinThe Kotlin Programming Language.项目地址: https://gitcode.com/GitHub_Trending/ko/kotlin

这个仓库是 Kotlin 编译器本体,而不是语言 SDK:源码、前端、后端和 Native 工具链都在这里。首次联网构建会下载intellij-core、idea-full等体积相当大的依赖,缓存在本地 Gradle 仓库后,后续构建就可以完全断网。读完这篇,你能独立完成"一次联网下全量依赖 → 离线构建 → 校验失败时修复"的完整流程。

一、动手前:环境与前置准备

  • JDK 17 及以上。构建用 Gradle toolchains,缺失的 JDK 会从 Eclipse Adoptium 自动下载;想只用本机 JDK,按 gradle.properties 中org.gradle.java.installations.fromEnv列出的变量名配置(JDK_1_8、JDK_11、JDK_17_0、JDK_21_0、JDK_25_0等)
  • 内存至少 8 GB 可用:默认堆上限 6 GB,参数写在gradle.properties的org.gradle.jvmargs
  • Windows 需开启长路径:git config core.longpaths true
  • 若要构建 Kotlin/Native:macOS 需 Xcode 26.4 及以上,Linux 需 glibc 2.23 及以上,Windows 需 VS2019 C++ 构建工具(14.29)加 Windows SDK 10.0.18362.0 及以上,要求见 kotlin-native/README.md
  • 注意:根目录gradle.properties里kotlin.native.enabled默认是false,Native 能力要显式打开

二、分步操作

1. 克隆仓库,准备本地构建

先把源码拉到本地,Native 相关特性默认关闭,按需再打开:

git clone https://gitcode.com/GitHub_Trending/ko/kotlin cd kotlin # 需要构建 Native 时,在根目录创建/修改 local.properties,加入: # kotlin.native.enabled=true

跑完这一步,git status干净、目录里能看到gradlew和local.properties就算成功。

2. 首次联网:把依赖一次性下全

离线的前提是缓存完整,所以第一次必须联网构建。dist任务会把编译器分发版组装到dist/kotlinc/,跑一次它,构建链路上的依赖就都进本地缓存了:

./gradlew dist

成功标志是最后输出BUILD SUCCESSFUL,且dist/kotlinc/目录已生成。

注意:依赖体积很大,网络差时下载容易超时。首次执行加两个参数把超时放宽到 60 秒即可:

./gradlew dist -Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000

3. 缓存就位后,切换离线构建

断网环境(内网、演示现场)下,给任意任务加上--offline,Gradle 只用本地缓存、不再尝试联网:

./gradlew :kotlin-native:dist --offline

验证方式:全程没有新的下载日志,最后BUILD SUCCESSFUL。对 Native 编译,产物在./dist里,可以直接用./dist/bin/kotlinc-native hello.kt -o hello试编译。

小贴士:跑测试用./gradlew compilerTest --offline验证全量测试;只想看核心库测试则跑./gradlew coreLibsTest --offline。要复刻 CI 的完整构建,再加-Pteamcity=true。

4. 校验元数据失效时的修复路径

仓库对全部依赖开了 Gradle 依赖校验,哈希和名单写在 gradle/verification-metadata.xml 里。构建改了依赖后,通常不用手工维护——仓库自带脚本会先清掉旧的components段、再重新生成:

./scripts/update-verification-metadata.sh

如果你需要手动拆成两步,先删components段(Linux/Git for Windows):

sed -i -e '/<components>/,/<\/components>/d' gradle/verification-metadata.xml ./gradlew --write-verification-metadata sha256 -Pkotlin.native.enabled=true resolveDependencies

resolveDependencies会解析所有平台(含插件下载)的依赖,重新生成后再次./gradlew dist --offline,不再报Dependency verification failed即修复完成。

三、踩坑记录

1. 构建直接报Dependency verification failed

现象:构建还没进入编译阶段就失败,提示某个依赖哈希对不上。 原因:本地仓库中该构件缺失或内容与校验文件记录不一致。 解决:不要直接删文件"绕过",按第 4 步走:清components段 + 重新生成校验数据。

2. 明明加了-Pkotlin.native.enabled=true,Native 依赖却没进校验文件

现象:生成校验元数据后,native 相关的构件缺失。 原因:local.properties的优先级高于命令行-P,文件里的kotlin.native.enabled=false会把参数顶掉。 解决:打开local.properties,删掉或改成kotlin.native.enabled=true后重新生成。

3. 首次构建在下载阶段卡死或超时

现象:卡在拉取intellij-core、idea-full附近,最终报连接/读超时。 原因:这两个依赖体积大,默认超时在网络波动时不够。 解决:首次运行加上-Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000,跑完这一次后就可以一直--offline了。

四、速查表

场景命令 / 参数说明
首次联网构建./gradlew dist产出dist/kotlinc/,依赖入本地缓存
超时放宽-Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000首次大体积依赖下载用
离线构建./gradlew <任务> --offline只用本地缓存
Native 构建./gradlew :kotlin-native:dist加:kotlin-native:distPlatformLibs可带平台库
全量 Native 构建./gradlew :kotlin-native:bundle产物在./dist
复刻 CI-Pteamcity=true本地默认跳过 proguard 和 jar 压缩
重新生成校验./scripts/update-verification-metadata.sh等价于清components段 +--write-verification-metadata sha256
全平台解析依赖./gradlew resolveDependencies生成校验数据前用

流程走到这里已经完整:联网一次把缓存攒足,之后断网跑构建,遇到校验报错回到第 4 步修复即可。下次要扩展目标平台时,记得先确认local.properties没有把 Native 开关关回去。

【免费下载链接】kotlinThe Kotlin Programming Language.项目地址: https://gitcode.com/GitHub_Trending/ko/kotlin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询