Gradle не видит Kotlin зависимость от mavenLocal - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь извлечь часть моего проекта Kotlin Gradle в отдельный репозиторий.Это мультиплатформенный проект Kotlin (https://github.com/krzema12/fsynth), и я хочу извлечь того, что находится в пакете plotassert .

Я следовал https://kotlinlang.org/docs/tutorials/multiplatform-library.html. Чтобы проверить его локально,Я опубликовал недавно извлеченный проект в локальный репозиторий Maven, выполнив задачу publishToMavenLocal Gradle, а затем поместил mavenLocal() в раздел repositories основного проекта ( здесь , как первый элемент). В core зависимости проекта ( здесь ) Я положил

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 голосов
/ 24 января 2019

Оказалось, что у меня было

enableFeaturePreview('GRADLE_METADATA')

в проекте библиотеки, но не было в проекте потребителя.Добавление этой версии и повышение версии Gradle-оболочки до 4.9 решило проблему.

...