gradle maven publish Pom using kotlin-dsl



我有一个多平台 Kotlin 库项目,它发布到 maven 并一直在更新到 kotlin 1.3 多平台模型和 kotlin-dsl

前面的 groovy gradle 脚本有一个 modifyPom 块,我在这里找到了一个例子。 但是一旦我添加

val modifyPom : Closure<*> by ext
modifyPom(closureOf<MavenPom> {
   // pom code in here
})

无论pom数据中有什么,我都会得到相同的结果,即modifyPom groovy闭包的调用以一个非常模糊的错误破坏了构建:

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

换句话说,调用 modifyPom groovy Closure 的行号,但没有关于实际错误的信息。

我正在使用 Gradle 5.0。任何帮助表示赞赏。

所以 - 在 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?

编辑:好吧,在 https://github.com/JetBrains/kotlin-native/issues/2372 中得到了回答在 Gradle Kotlin DSL 中,它变为:

project.publishing.publications.withType<MavenPublication>().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)
        }
    }
}

此问题已通过将 modifyPom 的定义更改为

val modifyPom : Closure<MavenPom> by ext

这解决了发布的原始问题,现在正在修改pom。 如果有人需要帮助,请添加评论,希望我会注意到

相关内容

  • 没有找到相关文章

最新更新