首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gradle maven使用kotlin-dsl发布Pom

gradle maven使用kotlin-dsl发布Pom
EN

Stack Overflow用户
提问于 2019-01-13 10:35:04
回答 2查看 1.2K关注 0票数 0

我有一个发布到maven的多平台kotlin库项目,并且已经更新到kotlin 1.3多平台模型和kotlin-dsl。

前面的groovy gradle脚本有一个modifyPom块,我找到了一个example here。但是,只要我添加了

代码语言:javascript
复制
val modifyPom : Closure<*> by ext

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

无论pom数据是什么,我都会得到相同的结果,那就是modifyPom groovy闭包的调用破坏了构建,并出现了一个非常模糊的错误:

代码语言:javascript
复制
Build file '<path>\build.gradle.kts' line: 47
Open File

换句话说,modifyPom groovy闭包调用的行号,但没有关于实际错误的内容。

我使用的是Gradle 5.0。感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-01-17 00:31:04

所以-在Groovy中,我有一个配置POMs的代码块,它工作得很好:

代码语言:javascript
复制
    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中得到了回答,它变成了:

代码语言:javascript
复制
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)
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-01-15 07:51:54

通过将modifyPom的定义更改为

代码语言:javascript
复制
val modifyPom : Closure<MavenPom> by ext

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54165652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档