我正在尝试将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也没有看到此依赖项:
如果我故意使用一些错误的依赖项名称,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的这种行为不正确吗?我的理解是,它应该在“源集”下列出此依赖项,就像在名称不正确的情况下一样。
我还没有尝试将新提取的项目发布到一些在线仓库中,因为我希望有机会在本地进行迭代,而不是发布每个更改。
您能给我一个指针吗?
答案 0 :(得分:0)
原来我有
enableFeaturePreview('GRADLE_METADATA')
在库项目中,但没有在使用者项目中。添加它并将Gradle包装器版本提高到4.9可解决该问题。