Gradle Maven опубликовать Pom с помощью Kotlin-DSL - PullRequest
0 голосов
/ 13 января 2019

У меня есть мультиплатформенный проект библиотеки kotlin, который публикуется в maven и обновлялся до мультиплатформенной модели kotlin 1.3 и kotlin-dsl

В предыдущем скрипте groovy gradle есть блок modifyPom, и я нашел пример здесь . Однако, как только я добавлю

val modifyPom : Closure<*> by ext

modifyPom(closureOf<MavenPom> {
   // pom code in here
})

Я получаю один и тот же результат независимо от того, что находится в данных pom, а именно: вызов groovy замыкания modifyPom нарушает сборку с очень неопределенной ошибкой:

Build file '<path>\build.gradle.kts' line: 47
Open File

Другими словами, номер строки для вызова modifyPom groovy Closure, но ничего о фактической ошибке.

Я использую Gradle 5.0. Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Итак - в Groovy у меня был этот блок для настройки POM, и он работал просто отлично:

    project.publishing.publications.forEach { publication ->
        publication.pom.withXml {
            def root = asNode()
            root.appendNode("name", "libui")
            root.appendNode("description", "Kotlin/Native interop to libui: a portable GUI library")
            root.appendNode("url", POM_SCM_URL)
            root.children().last() + {
                licenses {
                    license {
                        name "MIT License"
                        url POM_SCM_URL
                        distribution "repo"
                    }
                }
                developers {
                    developer {
                        id "msink"
                        name "Mike Sinkovsky"
                        email "msink@permonline.ru"
                    }
                }
                scm {
                    url POM_SCM_URL
                    connection POM_SCM_CONNECTION
                    developerConnection POM_SCM_DEV_CONNECTION
                }
            }
        }
    }

А как конвертировать его в Kotlin DSL?

Edit: Ну, ответили в https://github.com/JetBrains/kotlin-native/issues/2372 В Gradle Kotlin DSL это становится:

project.publishing.publications.withType(MavenPublication::class.java).forEach { publication ->
    with(publication.pom) {
        withXml {
            val root = asNode()
            root.appendNode("name", "libui")
            root.appendNode("description", "Kotlin/Native interop to libui: a portable GUI library")
            root.appendNode("url", POM_SCM_URL)
        }

        licenses {
            license {
                name.set("MIT License")
                url.set(POM_SCM_URL)
                distribution.set("repo")
            }
        }
        developers {
            developer {
                id.set("msink")
                name.set("Mike Sinkovsky")
                email.set("msink@permonline.ru")
            }
        }
        scm {
            url.set(POM_SCM_URL)
            connection.set(POM_SCM_CONNECTION)
            developerConnection.set(POM_SCM_DEV_CONNECTION)
        }
    }
}
0 голосов
/ 15 января 2019

Эта проблема была исправлена ​​путем изменения определения modifyPom на

val modifyPom : Closure<MavenPom> by ext

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

...