diff --git a/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt b/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt index fdeea0f2e39..5bacf0a912a 100644 --- a/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt +++ b/buildSrc/src/main/kotlin/plugins/PublishedKotlinModule.kt @@ -7,10 +7,12 @@ import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.maven.MavenResolver import org.gradle.api.plugins.MavenRepositoryHandlerConvention +import org.gradle.api.publication.maven.internal.deployer.MavenRemoteRepository import org.gradle.api.tasks.Upload import org.gradle.kotlin.dsl.* import org.gradle.plugins.signing.Sign import org.gradle.plugins.signing.SigningExtension +import kotlin.properties.Delegates /** @@ -19,6 +21,8 @@ import org.gradle.plugins.signing.SigningExtension */ open class PublishedKotlinModule : Plugin { + private fun String.toBooleanOrNull() = listOf(true, false).firstOrNull { it.toString().equals(this, ignoreCase = true) } + override fun apply(project: Project) { project.run { @@ -28,12 +32,8 @@ open class PublishedKotlinModule : Plugin { if (!project.hasProperty("prebuiltJar")) { plugins.apply("signing") - val signingProp = project.rootProject.properties["signingRequired"] - val signingRequired = when (signingProp) { - is Boolean -> signingProp == true - is String -> listOf("true", "yes").contains(signingProp.toLowerCase().trim()) - else -> project.rootProject.extra["isSonatypeRelease"] as? Boolean == true - } + val signingRequired = project.findProperty("signingRequired")?.toString()?.toBooleanOrNull() + ?: project.property("isSonatypeRelease") as Boolean configure { isRequired = signingRequired @@ -95,16 +95,19 @@ open class PublishedKotlinModule : Plugin { val username: String? by preparePublication.extra val password: String? by preparePublication.extra + val repoUrl: String by preparePublication.extra + + var repository: MavenRemoteRepository by Delegates.notNull() repositories { withConvention(MavenRepositoryHandlerConvention::class) { mavenDeployer { withGroovyBuilder { - "repository"("url" to uri(preparePublication.extra["repoUrl"])) - - if (username != null && password != null) { - "authentication"("userName" to username, "password" to password) + "repository"("url" to repoUrl)!!.also { repository = it as MavenRemoteRepository }.withGroovyBuilder { + if (username != null && password != null) { + "authentication"("userName" to username, "password" to password) + } } } @@ -112,6 +115,10 @@ open class PublishedKotlinModule : Plugin { } } } + + doFirst { + repository.url = repoUrl + } } val install = if (tasks.names.contains("install")) tasks.getByName("install") as Upload diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 5ebb8b2683f..b4d3ba20e53 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -105,7 +105,7 @@ task preparePublication { String sonatypeSnapshotsUrl = (isSonatypePublish && !isRelease) ? "https://oss.sonatype.org/content/repositories/snapshots/" : null - ext.repoUrl = properties["deployRepoUrl"] ?: sonatypeSnapshotsUrl ?: properties["deploy-url"] ?: "file://${rootProject.buildDir}/repo" + ext.repoUrl = properties["deployRepoUrl"] ?: sonatypeSnapshotsUrl ?: properties["deploy-url"] ?: "file://${rootProject.buildDir}/repo".toString() ext.username = properties["deployRepoUsername"] ?: properties["kotlin.${repoProvider}.user"] ext.password = properties["deployRepoPassword"] ?: properties["kotlin.${repoProvider}.password"] diff --git a/libraries/prepareSonatypeStaging.gradle b/libraries/prepareSonatypeStaging.gradle index ce07eec8f6d..68a94d8b6fe 100644 --- a/libraries/prepareSonatypeStaging.gradle +++ b/libraries/prepareSonatypeStaging.gradle @@ -30,7 +30,7 @@ preparePublication { } def repoId = rootNode.data.stagedRepositoryId.text() - ext.repoUrl = "http://oss.sonatype.org/service/local/staging/deployByRepositoryId/$repoId/" + ext.repoUrl = "http://oss.sonatype.org/service/local/staging/deployByRepositoryId/$repoId/".toString() println "##teamcity[setParameter name='system.deploy-url' value='${repoUrl}']" } }