Kotlin-Multiplatform - файлы Jar не загружаются в зависимости от Gradle после загрузки-публикации на Bintray

Некоторое время мне удавалось опубликовать свою работу на bintray, когда я опробовал ее на тестовом проекте.

repositories {
  maven("https://dl.bintray.com/user/libraries/")
}

dependencies { 
   implementation("com.user.project:project-name:version")
}

Я не получаю ошибки при сборке Gradle.

Я вижу свои jar-файлы на https://dl.bintray.com/user/libraries/

com/
  user/
     project/
           projec-name/
             | -- maven-metadata.xml
             | -- version
                     | -- pom.xml
                     | -- project-name-version-jvm.jar
                     | -- project-name-meta-data-version-sources.jar
                     | -- project-name-meta-data-version.jar

загрузка на Bintray кажется, что все в порядке

В IntelliJ на вкладке Gradle на правой панели проект указан на runtimeClassPath, но не на compileClassPath, а также файл jar, загруженный с External Dependencies

вот мой

build.gradle.kts

publishing {
    publications {
        create<MavenPublication>("project-name") {
            pom {
                name.set("project-name")
                description.set("My project descriptoin")
                url.set("https://github.com/user/project-name")

                licenses {
                    license {
                        name.set("Apache License 2.0")
                        url.set("https://github.com/user/project-name/blob/master/LICENSE")
                    }
                }
                developers {
                    developer {
                        id.set("user")
                        name.set("user")
                    }
                }
                scm {
                    connection.set("scm:git:git://github.com/user/project-name.git")
                    url.set("https://github.com/user/project-name")
                }
            }
        }
    }
}

bintray {
    user = "user"
    key = "key"

    pkg(delegateClosureOf<BintrayExtension.PackageConfig> {
        repo = "libraries"
        name = "project-name"
        userOrg = "user"
        setPublications("project-name") // should be same as set in Maven Publication above
        filesSpec(delegateClosureOf<CopySpec> {
            from("build/libs/")
            into("com/user/project/project-name/version") // this i think where the issue is, altho can't verify
        })

    })
}

но почему я не могу получить банки, когда помещаю их в свой проект через зависимости.

Я был бы очень признателен за понимание того, где я сделал это неправильно

Дополнительный вопрос: если я нацелен только на JVM, можно ли удалить все остальные jar-файлы, кроме jvm в качестве суффикса.


person Victor Harlan Lacson    schedule 14.06.2020    source источник


Ответы (1)


Загруженные артефакты не соответствуют макету Maven.

Главный артефакт должен называться project-name-version.jar. Наличие -meta-data в исходных и альтернативных JAR-файлах также означает, что они не будут рассматриваться как архивы с классификаторами для Maven.

Тем не менее, Gradle должен пожаловаться на то, что не нашел этот JAR.

Какое задание вы использовали для тестирования потребления?

person Louis Jacomet    schedule 15.06.2020
comment
как вы сказали, project-name-version.jar должен быть главным артефактом. Я использовал kotlin-multiplatform, после сборки он генерирует эти jar-файлы в соответствии с целевой платформой. Я новичок в издательских библиотеках. так что я не уверен, что должно быть правильным. Я выполнил инструкцию именно здесь: github.com/bintray/gradle-bintray-plugin#readme - person Victor Harlan Lacson; 15.06.2020
comment
Мультиплатформенность Kotlin требует, чтобы метаданные модуля Gradle работали правильно. Однако плагин bintray еще не совместим с его публикацией - см. github.com/bintray / gradle-bintray-plugin / issues / 229 - person Louis Jacomet; 15.06.2020