diff --git a/build.gradle.kts b/build.gradle.kts index e88bc01427..43f6b80bbe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,11 +1,13 @@ import org.jetbrains.ValidatePublications import org.jetbrains.configureDokkaVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.publicationChannels plugins { kotlin("jvm") apply false id("java") id("org.jetbrains.dokka") version "1.4.20" + id("io.github.gradle-nexus.publish-plugin") } val dokka_version: String by project @@ -79,3 +81,16 @@ tasks.whenTaskAdded { println("Publication version: $dokka_version") tasks.register("validatePublications") + +nexusPublishing { + repositories { + sonatype { + username.set(System.getenv("SONATYPE_USER")) + password.set(System.getenv("SONATYPE_PASSWORD")) + } + } +} + +tasks.maybeCreate("dokkaPublish").run { + finalizedBy(tasks.named("closeAndReleaseSonatypeStagingRepository")) +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 7a7b8f6a62..b1a6646ffa 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -5,9 +5,11 @@ plugins { repositories { mavenCentral() jcenter() + maven("https://plugins.gradle.org/m2/") } dependencies { implementation("com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4") implementation("com.github.jengelman.gradle.plugins:shadow:2.0.4") + implementation("io.github.gradle-nexus:publish-plugin:1.0.0") } diff --git a/buildSrc/src/main/kotlin/org/jetbrains/DokkaVersion.kt b/buildSrc/src/main/kotlin/org/jetbrains/DokkaVersion.kt index 3ee348c017..4cedd4576d 100644 --- a/buildSrc/src/main/kotlin/org/jetbrains/DokkaVersion.kt +++ b/buildSrc/src/main/kotlin/org/jetbrains/DokkaVersion.kt @@ -26,5 +26,5 @@ val Project.dokkaVersion: String get() = configureDokkaVersion() val Project.dokkaVersionType: DokkaVersionType - get() = DokkaVersionType.values().find { it.suffix.matches(dokkaVersion.substringAfter("-")) } + get() = DokkaVersionType.values().find { it.suffix.matches(dokkaVersion.substringAfter("-", "")) } ?: throw IllegalStateException("Unrecognized version type: $dokkaVersion") diff --git a/buildSrc/src/main/kotlin/org/jetbrains/publication.kt b/buildSrc/src/main/kotlin/org/jetbrains/publication.kt index 9187c5a209..c89167cda7 100644 --- a/buildSrc/src/main/kotlin/org/jetbrains/publication.kt +++ b/buildSrc/src/main/kotlin/org/jetbrains/publication.kt @@ -9,6 +9,7 @@ import org.gradle.api.publish.maven.tasks.PublishToMavenRepository import org.gradle.kotlin.dsl.* import org.gradle.plugins.signing.SigningExtension import org.jetbrains.DokkaPublicationChannel.* +import io.github.gradlenexus.publishplugin.NexusPublishExtension import java.net.URI class DokkaPublicationBuilder { @@ -79,9 +80,14 @@ fun Project.configureSpacePublicationIfNecessary(vararg publications: String) { fun Project.createDokkaPublishTaskIfNecessary() { tasks.maybeCreate("dokkaPublish").run { - if (publicationChannels.any { it.isSpaceRepository } || publicationChannels.any { it.isMavenRepository }) { + if (publicationChannels.any { it.isSpaceRepository }) { dependsOn(tasks.named("publish")) } + + if (publicationChannels.any { it.isMavenRepository }) { + dependsOn(tasks.named("publishToSonatype")) + } + if (publicationChannels.any { it.isBintrayRepository }) { dependsOn(tasks.named("bintrayUpload")) } @@ -130,29 +136,10 @@ private fun Project.configureBintrayPublication(vararg publications: String) { fun Project.configureSonatypePublicationIfNecessary(vararg publications: String) { if (publicationChannels.any { it.isMavenRepository }) { - configureSonatypePublication(*publications) signPublicationsIfKeyPresent(*publications) } } -private fun Project.configureSonatypePublication(vararg publications: String) { - configure { - repositories { - maven { - if (MavenCentral in publicationChannels) { - url = URI("https://oss.sonatype.org/service/local/staging/deploy/maven2/") - } else if (MavenCentralSnapshot in publicationChannels) { - url = URI("https://oss.sonatype.org/content/repositories/snapshots/") - } - credentials { - username = System.getenv("SONATYPE_USER") - password = System.getenv("SONATYPE_PASSWORD") - } - } - } - } -} - private fun Project.assertPublicationVersion() { if (System.getenv("SKIP_VERSION_CHECK")?.contains("true", ignoreCase = true) == true) return @@ -161,7 +148,9 @@ private fun Project.assertPublicationVersion() { publicationChannel.acceptedDokkaVersionTypes.any { acceptedVersionType -> acceptedVersionType == dokkaVersionType } - }) { throw AssertionError("Wrong version $dokkaVersion for configured publication channels $publicationChannels") } + }) { + throw AssertionError("Wrong version $dokkaVersion for configured publication channels $publicationChannels") + } } fun MavenPublication.configurePom(projectName: String) { diff --git a/runners/build.gradle.kts b/runners/build.gradle.kts index 5708114929..ec26973def 100644 --- a/runners/build.gradle.kts +++ b/runners/build.gradle.kts @@ -3,4 +3,4 @@ subprojects { plugin("maven-publish") plugin("com.jfrog.bintray") } -} \ No newline at end of file +}