gpt4 book ai didi

gradle - 从 Gradle 5.1.1 升级到 6.0.1 破坏了 Kotlin 多平台构建

转载 作者:行者123 更新时间:2023-12-02 05:27:05 24 4
gpt4 key购买 nike

我已升级我的 Kotlin 多平台项目以使用 Gradle 6.0.1:

gradle wrapper --gradle-version 6.0.1 --distribution-type all

现在我的构建正在崩溃。它无法识别我作为依赖项添加到项目中的通用模块:

dependencies {
commonMainApi("mygroup:mylib:$myversion")
}

我正在使用 Kotlin DSL,该项目也是一个多平台项目。我得到的是一堵文本墙,详细说明了所有无法解析的导入(所有都应该是从我的依赖项中的 common 模块中的 common 模块导入的)我的项目)。

我做的唯一一件事就是升级到 Gradle 6.0.1。如果我恢复以前的状态,我的构建就可以了。我做错了什么?

最佳答案

这很可能与 Gradle 6.0+ 不急切地请求 *.module 有关。来自存储库的元数据文件,除非 *.pom模块的 包含一个特殊标记,*.pom 中不存在该标记。与较旧的 Gradle 版本一起发布(我相信是 5.3 之前的版本)

那些*.module需要元数据文件来正确地将单个依赖项解释为用于分析项目的公共(public)源的公共(public)代码元数据以及构建目标所针对的特定于平台的工件。如果没有这个,依赖关系就会解析为库的根模块,而根本没有任何工件。

要在消费者端修复此问题,您可以让 Gradle 请求那些 *.module通过将此语句添加到构建脚本中的存储库声明中来创建元数据文件:

repositories {
jcenter {
metadataSources {
gradleMetadata()
mavenPom()
}
}
// or, if you are using a custom Maven repository:
maven("https://my.repo.com") {
metadataSources {
gradleMetadata()
mavenPom()
}
}
}

在 Gradle 文档中:Supported metadata sources

<小时/>

UPD: JitPack 似乎从 POM 中删除了 Gradle 模块元数据标记 ( <!-- do_not_remove: published-with-gradle-metadata --> ),这导致 Gradle 不请求 *.module元数据文件。也可以使用与上述类似的解决方法。

关于gradle - 从 Gradle 5.1.1 升级到 6.0.1 破坏了 Kotlin 多平台构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59413364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com