我已经升级了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
。如果恢复到先前的状态,我的构建就可以了。我在做什么错了?
答案 0 :(得分:3)
这很可能与以下事实有关:Gradle 6.0+不会急于从存储库请求*.module
元数据文件,除非模块的*.pom
包含特殊标记,而该标记在*.pom
发行了较早的Gradle版本(我认为是5.3之前的版本)
需要这些*.module
元数据文件来正确地解释单个依赖关系,这既是用于分析项目的通用源的通用代码元数据,又是针对其构建目标的特定于平台的工件。否则,该依赖项将被解析为完全没有构件的库根模块。
要在消费者方面解决此问题,您可以通过在构建脚本的存储库声明中添加以下语句,使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
元数据文件。也可以使用上述类似的解决方法。