From 8b70767d762088d48ddfd9adb033079d18c4cc46 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 20 Sep 2017 21:39:36 +0300 Subject: [PATCH] Configure pom signing before deployment Use groovy where kotlin dsl lacks of typed api --- .../src/main/kotlin/plugins/PublishedKotlinModule.kt | 12 ++++++++++++ libraries/commonConfiguration.gradle | 12 ++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt b/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt index 5bacf0a912a..8b6a03dff56 100644 --- a/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt +++ b/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt @@ -4,6 +4,7 @@ import org.codehaus.groovy.runtime.InvokerHelper import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.maven.MavenDeployer import org.gradle.api.artifacts.maven.MavenResolver import org.gradle.api.plugins.MavenRepositoryHandlerConvention @@ -99,11 +100,22 @@ open class PublishedKotlinModule : Plugin { var repository: MavenRemoteRepository by Delegates.notNull() + val signPom = rootProject.extra["signPom"] as groovy.lang.Closure<*> + repositories { withConvention(MavenRepositoryHandlerConvention::class) { mavenDeployer { + signPom.call(project, this as MavenDeployer) + withGroovyBuilder { + // TODO: Use with kotlin-dsl 0.12+ instead of signPom +// "beforeDeployment" { +// val signing = project.the() +// if (signing.isRequired) +// signing.signPom(this as MavenDeployment) +// } + "repository"("url" to repoUrl)!!.also { repository = it as MavenRemoteRepository }.withGroovyBuilder { if (username != null && password != null) { "authentication"("userName" to username, "password" to password) diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 1d0291e35a1..e22613b7c35 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -116,6 +116,13 @@ task preparePublication { } } +ext.signPom = { Project project, MavenDeployer deployer -> + deployer.beforeDeployment { MavenDeployment deployment -> + if (project.signing.required) + project.signing.signPom(deployment) + } +} + ext.configurePublishing = { Project project -> project.configure(project) { apply plugin: 'maven' @@ -157,10 +164,7 @@ ext.configurePublishing = { Project project -> repositories { mavenDeployer { - beforeDeployment { MavenDeployment deployment -> - if (signing.required) - signing.signPom(deployment) - } + signPom(project, it) repository(url: prepareTask.repoUrl) { authentication(userName: prepareTask.username, password: prepareTask.password)