Gradle 没有以正确的方式寻找依赖关系

Posted

技术标签:

【中文标题】Gradle 没有以正确的方式寻找依赖关系【英文标题】:Gradle doesn't look for dependency in the right way 【发布时间】:2021-04-29 17:13:12 【问题描述】:

我正在尝试将 moko 依赖项添加到 gradle 上的 kotlin 多平台。

org.gradle.internal.resolve.ArtifactNotFoundException: 找不到 mvvm-livedata-0.9.1-samplessources.jar (dev.icerock.moko:mvvm-livedata:0.9.1)。 在以下位置搜索: https://dl.bintray.com/icerockdev/moko/dev/icerock/moko/mvvm-livedata/0.9.1/mvvm-livedata-0.9.1-samplessources.jar

看起来链接的“-samplessources”部分不应该存在,但不知道如何删除它。

【问题讨论】:

您可以下载jar并保存在本地吗?然后你可以告诉 Maven 使用下载的版本。 我想过这样做,但这发生在每个 moko 依赖项上,我需要添加一些其他依赖项。并且下载并安装每一个,这是不切实际的。 我也有同样的问题。这不仅是 moko 图书馆的问题,也是许多其他图书馆的问题。我认为甚至不需要这个 samplesources.jar 文件 - 这可能不是那个库的问题,而是 Gradle 插件本身的问题。我猜 Gradle 插件无法以某种方式与 KMP 项目中的某些库一起使用。 见youtrack.jetbrains.com/issue/KT-46153。 【参考方案1】:

如果其他人面临类似问题(缺少 your-library-name-samplessources.jar) 通常,当您的多平台项目尝试使用该库时会发生这种情况,该库不支持您在项目中声明的所有目标。例如,您有一个ios() 目标,而该库不生成任何本机工件。 要了解您的项目的哪些目标未包含在库中,您可以尝试通过调用来构建您的项目

./gradlew build  

您将收到一个综合错误,描述未找到哪个库变体(在我的情况下为ios_x64):

【讨论】:

仅供参考,我创建了youtrack.jetbrains.com/issue/KT-46153,因为我相信人们遇到的故障模式具有误导性。 但是它应该起作用还是只是错误具有误导性?我有一个不支持 js 目标的库,但我仍然想构建 js 目标,它永远不会使用这个库中的代码。有没有可能? @KaterinaPetrova,到目前为止,你的答案是最好的。刚刚意识到新的 Kotlin Multiplatform 版本为 iOS 添加了新的目标。只需重新发布我的库并导入到我的项目中,一切正常。【参考方案2】:

我解决了从 gradle 中删除 jvm 目标的问题,看起来 moko 库还不支持 jvm。

版本: 科特林 1.4.21 moko-mvvm-*:0.9.1

【讨论】:

以上是关于Gradle 没有以正确的方式寻找依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法以编程方式列出所有gradle依赖项?

Gradle:如何在java中以编程方式声明对项目特定配置的依赖关系

Gradle 解决依赖关系并构建/运行良好,但 IntelliJ 没有

在 Gradle 中,api 配置暴露了依赖关系,而实现却没有,这到底意味着啥?

Gradle + Buildship - 在 JAR 和项目之间切换依赖关系

如何管理 Gradle 模块之间的依赖关系?