Gradle没有从mavenLocal看到Kotlin依赖性

时间:2018-12-29 21:11:02

标签: maven gradle intellij-idea kotlin multiplatform

我正在尝试将Kotlin Gradle项目的一部分提取到单独的存储库中。这是一个Kotlin跨平台项目(https://github.com/krzema12/fsynth),我想提取whatever sits in 'plotassert' package

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

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

问题是,在尝试使用代码中的某些类时,IntelliJ / Gradle也没有看到此依赖项:

not visible

如果我故意使用一些错误的依赖项名称,Gradle会注意到它:

wrong name

,所以这意味着它以某种方式看到了本地存储库中存在依赖项。我还在~/.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的这种行为不正确吗?我的理解是,它应该在“源集”下列出此依赖项,就像在名称不正确的情况下一样。

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

您能给我一个指针吗?

1 个答案:

答案 0 :(得分:0)

原来我有

enableFeaturePreview('GRADLE_METADATA')

在库项目中,但没有在使用者项目中。添加它并将Gradle包装器版本提高到4.9可解决该问题。