我有一个发布到maven的多平台kotlin库项目,并且已经更新到kotlin 1.3多平台模型和kotlin-dsl。
前面的groovy gradle脚本有一个modifyPom块,我找到了一个example here。但是,只要我添加了
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闭包调用的行号,但没有关于实际错误的内容。
我使用的是Gradle 5.0。感谢您的帮助。
发布于 2019-01-17 00:31:04
所以-在Groovy中,我有一个配置POMs的代码块,它工作得很好:
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?
编辑:嗯,在Gradle Kotlin DSL的https://github.com/JetBrains/kotlin-native/issues/2372中得到了回答,它变成了:
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)
}
}
}发布于 2019-01-15 07:51:54
通过将modifyPom的定义更改为
val modifyPom : Closure<MavenPom> by ext修复了发布后的原始问题,现在正在修改pom。如果有人需要帮助,请添加评论,希望我会注意到
https://stackoverflow.com/questions/54165652
复制相似问题