gpt4 book ai didi

gradle - Gradle Maven使用kotlin-dsl发布Pom

转载 作者:行者123 更新时间:2023-12-03 04:57:57 27 4
gpt4 key购买 nike

我有一个发布到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 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::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)
}
}
}

关于gradle - Gradle Maven使用kotlin-dsl发布Pom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165652/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com