Kotlin 仓库构建报 Dependency verification failed 怎么排查并更新校验元数据【免费下载链接】kotlinThe Kotlin Programming Language.项目地址: https://gitcode.com/GitHub_Trending/ko/kotlin在 Kotlin 语言仓库GitHub_Trending/ko/kotlin里执行 Gradle 构建或解析依赖时如果构建日志里出现Dependency verification failed错误通常不是你代码写错而是仓库启用的 Gradle 依赖校验机制在拦截。这个仓库对所有 Gradle 构建都开启了 dependencies verification 特性Gradle 会检查所用依赖的哈希值md5 和 sha256当本地构件缺失、或构件哈希与 gradle/verification-metadata.xml 中记录的不一致时构建就会以Dependency verification failed失败见 ReadMe.md 的 Dependency verification 小节。本文的排查路径是先确认失败原因是否属于哈希/构件不匹配再按仓库文档给出的方式更新verification-metadata.xml最后重新构建确认错误消失。判断这个错误是不是依赖校验引起的文档明确给出了两类触发条件本地构件artifact缺失本地构件哈希与gradle/verification-metadata.xml中列出的不同。也就是说如果你在修改了构建脚本、依赖版本例如gradle/libs.versions.toml、gradle/versions.properties之后构建失败并看到该错误大概率就是校验元数据没有跟着构建变更一起更新。仓库的约定是verification-metadata.xml只应在修改构建的提交中一起更新。可以先查看 gradle/verification-metadata.xml 确认结构文件开头是configuration段声明verify-metadata、verify-signatures开关和trusted-artifacts白名单随后是components段逐个组件记录sha256值。准备工作在 Unix/macOS 上使用./gradlew tasks-and-options在 Windows 上使用gradlew tasks-and-options执行构建见 ReadMe.md Building 小节。仓库使用 Gradle toolchains 自动从 Eclipse Adoptium 选择并装配所需 JDK如果项目目录下有local.properties先按下一节检查其中的开关。排查第一步检查 local.properties 里的 kotlin.native.enabled这是一个容易被忽略但文档特别强调的点如果 Kotlin 项目文件夹下存在local.properties且其中包含kotlin.native.enabledfalsenative 专用的依赖就不会被写入校验元数据。原因是local.properties的优先级高于构建命令里显式传入的-Pkotlin.native.enabledtrue。如果你刚更新过元数据后仍然报错先确认这一项把local.properties中的kotlin.native.enabledfalse移除或确保该文件不存在再重新执行下面的生成命令。更新校验元数据仓库文档给出的更新流程分两步先删掉verification-metadata.xml中的components段避免堆积过期的无用依赖记录再用 Gradle 的--write-verification-metadata重新生成。方式一手动执行两步第 1 步是删除components段。这条sed命令会原地修改gradle/verification-metadata.xml文件只保留configuration段执行前请确认你愿意丢弃文件里已有的组件哈希记录并在版本控制下有干净的基线便于回滚# macOS sed -i -e /components/,/\/components/d gradle/verification-metadata.xml # Linux Git for Windows sed -i -e /components/,/\/components/d gradle/verification-metadata.xml第 2 步是用 Gradle 重新生成依赖记录生成后要自行核对更新内容是否与你的构建变更相关./gradlew --write-verification-metadata sha256 -Pkotlin.native.enabledtrue resolveDependenciesresolveDependencies任务会解析所有平台的依赖包括插件下载到的依赖-Pkotlin.native.enabledtrue用于确保 native 依赖也被纳入同时注意上面local.properties的优先级问题。方式二直接使用仓库脚本可选仓库提供了 scripts/update-verification-metadata.sh 脚本把上面两步合在一起先按操作系统darwin与否分支执行对应的sed删除命令再运行./gradlew -i --write-verification-metadata sha256 -Pkotlin.native.enabledtrue resolveDependencies副作用与手动方式相同它会原地改写gradle/verification-metadata.xml并触发一次完整的依赖解析-i为 Gradle 的 info 日志级别输出会比较多。添加平台相关依赖时的额外注意如果你这次构建变更是新增了依赖名中带 OS 字样的依赖darwin、mac、osx、linux、windows文档要求把它们加入implicitDependencies配置或在必要时更新resolveDependencies任务本身——resolveDependencies应当能解析所有依赖包括不同平台的依赖。漏掉这一步时该平台的依赖不会出现在生成的校验元数据里换个平台构建又会报同样的Dependency verification failed。验证更新是否生效判断依据就是文档描述的失败条件本身重新执行你的构建例如./gradlew tasks-and-options。如果之前是构件缺失或哈希不同导致的Dependency verification failed更新后的verification-metadata.xml会包含新构件的记录该错误消失、构建能继续往下走即说明校验元数据已与当前构建匹配。若重新构建仍报同样错误回头检查两点local.properties是否含kotlin.native.enabledfalse以及平台相关依赖是否已按上一节加入implicitDependencies。限制说明仓库的约定是verification-metadata.xml只随修改构建的提交更新如果只是本地临时改动依赖而不打算提交更新这个文件会产生大量与本场景无关的 diff提交前需要自行甄别。删除components段属于破坏性操作会清掉文件里已有的全部组件记录只能靠后续--write-verification-metadata重新生成请在版本控制有基线的前提下执行。【免费下载链接】kotlinThe Kotlin Programming Language.项目地址: https://gitcode.com/GitHub_Trending/ko/kotlin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考