我有一个多平台 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。 如果有人需要帮助,请添加评论,希望我会注意到