首页 > 解决方案 > Gradle 没有看到来自 mavenLocal 的 Kotlin 依赖项

问题描述

我正在尝试将我的 Kotlin Gradle 项目的一部分提取到单独的存储库中。这是一个 Kotlin 多平台项目(https://github.com/krzema12/fsynth),我想提取'plotassert' 包中的任何内容

我跟着https://kotlinlang.org/docs/tutorials/multiplatform-library.html。为了在本地测试它,我通过执行 Gradle 的任务将新提取的项目发布到本地 Maven 存储库publishToMavenLocal,然后放入mavenLocal()主项目的repositories部分(这里作为第一项)。在core项目的依赖项(这里)我把

compile "it.krzeminski.plotassert:PlotAssert:0.0.1"

问题是 IntelliJ/Gradle 看不到这种依赖关系,在尝试使用代码中的某些类时也是如此:

不可见的

如果我故意使用了错误的依赖名,Gradle 会注意到:

错误的名字

所以这意味着它以某种方式看到本地存储库中存在依赖项。我还看到~/.m2/repository本地出版物产生了一些文件:

:~/.m2/repository$ tree
.
└── it
    └── krzeminski
        └── plotassert
            ├── PlotAssert
            │   ├── 0.0.1
            │   │   ├── PlotAssert-0.0.1.module
            │   │   └── PlotAssert-0.0.1.pom
            │   └── maven-metadata-local.xml
            ├── PlotAssert-js
            │   ├── 0.0.1
            │   │   ├── PlotAssert-js-0.0.1.jar
            │   │   ├── PlotAssert-js-0.0.1.module
            │   │   ├── PlotAssert-js-0.0.1.pom
            │   │   └── PlotAssert-js-0.0.1-sources.jar
            │   └── maven-metadata-local.xml
            ├── PlotAssert-jvm
            │   ├── 0.0.1
            │   │   ├── PlotAssert-jvm-0.0.1.jar
            │   │   ├── PlotAssert-jvm-0.0.1.module
            │   │   ├── PlotAssert-jvm-0.0.1.pom
            │   │   └── PlotAssert-jvm-0.0.1-sources.jar
            │   └── maven-metadata-local.xml
            ├── PlotAssert-linux
            │   ├── 0.0.1
            │   │   ├── PlotAssert-linux-0.0.1.klib
            │   │   ├── PlotAssert-linux-0.0.1.module
            │   │   ├── PlotAssert-linux-0.0.1.pom
            │   │   └── PlotAssert-linux-0.0.1-sources.jar
            │   └── maven-metadata-local.xml
            └── PlotAssert-metadata
                ├── 0.0.1
                │   ├── PlotAssert-metadata-0.0.1.jar
                │   ├── PlotAssert-metadata-0.0.1.module
                │   ├── PlotAssert-metadata-0.0.1.pom
                │   └── PlotAssert-metadata-0.0.1-sources.jar
                └── maven-metadata-local.xml

Gradle 或 IntelliJ 的这种行为不正确吗?我的理解是它应该在“源集”下列出这个依赖项,就像在名称不正确的情况下一样。

我还没有尝试将新提取的项目发布到某个在线仓库,因为我希望有机会在本地迭代而不是发布每个更改。

你能给我一个指针,我在这里缺少什么吗?

标签: mavengradleintellij-ideakotlinmultiplatform

解决方案


原来我有

enableFeaturePreview('GRADLE_METADATA')

在图书馆项目中,但在消费者项目中没有。添加它并将 Gradle 包装器版本升级到 4.9 解决了这个问题。


推荐阅读