bru*_*uto 5 gradle kotlin gradle-kotlin-dsl
尝试将项目转换为 GSK
我们在 Groovy 中有这个:
subprojects {
plugins.withType(MavenPlugin) {
tasks.withType(Upload) {
repositories {
mavenDeployer {
mavenLocal()
repository(url: "xxx") {
authentication(userName: "yyy", password: "zzz")
}
snapshotRepository(url: "xxx") {
authentication(userName: "yyy", password: "zzz")
}
pom.artifactId = "${project.name}"
pom.version = "$version"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在葛兰素史克,我得到了这样的结果:
plugins.withType(MavenPlugin::class.java) {
tasks.withType(Upload::class.java) {
val maven = the<MavenRepositoryHandlerConvention>()
maven.mavenDeployer {
// ???
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何实际构建/配置存储库对象以分配给 MavenDeployer 的存储库/snapshotRepository 属性?Groovy 摘录中的 mavenLocal() 对部署程序有什么作用,以及如何在 Kotlin 中调用它(因为它是 RepositoryHandler 上的方法,而不是 MavenDeployer 上的方法)?问题,问题
使用 Gradle 4.4
该mavenDeployer作品通过使用 Groovy 动态invokeMethod调用来工作,因此它不能很好地转换为kotlin-dsl.
这里有一个示例,展示了如何使用withGroovyBuilder方法块来配置这些特殊的 Groovy 类型。您可以withGroovyBuilder在0.11.1发行说明中查看有关该功能的一些详细信息
您的最新版本可能看起来像这样kotlin-dsl(此示例带有0.14.x)
withConvention(MavenRepositoryHandlerConvention::class) {
mavenDeployer {
withGroovyBuilder {
"repository"("url" to "xxx") {
"authentication"("userName" to "yyy", "password" to "zzz")
}
"snapshotRepository"("url" to "xxx") {
"authentication"("userName" to "yyy", "password" to "zzz")
}
}
pom.project {
withGroovyBuilder {
"artifactId"("${project.name}")
"version"("$version")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |