From f041faa59d4a95596ee514790174936db7b344d5 Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Fri, 27 Jan 2023 15:38:31 +0000 Subject: [PATCH] Open up SonatypeHost (#504) fixes https://github.com/vanniktech/gradle-maven-publish-plugin/issues/503 --- .../publish/MavenPublishBaseExtension.kt | 6 +++++ .../vanniktech/maven/publish/SonatypeHost.kt | 23 +++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/kotlin/com/vanniktech/maven/publish/MavenPublishBaseExtension.kt b/plugin/src/main/kotlin/com/vanniktech/maven/publish/MavenPublishBaseExtension.kt index fe653f12..b6a75638 100644 --- a/plugin/src/main/kotlin/com/vanniktech/maven/publish/MavenPublishBaseExtension.kt +++ b/plugin/src/main/kotlin/com/vanniktech/maven/publish/MavenPublishBaseExtension.kt @@ -80,6 +80,12 @@ abstract class MavenPublishBaseExtension( project.tasks.registerDropRepository(buildService) } + @JvmOverloads + @JvmSynthetic + fun publishToMavenCentral(host: String, automaticRelease: Boolean = false) { + publishToMavenCentral(SonatypeHost.valueOf(host), automaticRelease) + } + /** * Automatically apply Gradle's `signing` plugin and configure all publications to be signed. If signing credentials * are not configured this will fail the build unless the current version is a `SNAPSHOT`. diff --git a/plugin/src/main/kotlin/com/vanniktech/maven/publish/SonatypeHost.kt b/plugin/src/main/kotlin/com/vanniktech/maven/publish/SonatypeHost.kt index 68ad3fcd..a394ae39 100644 --- a/plugin/src/main/kotlin/com/vanniktech/maven/publish/SonatypeHost.kt +++ b/plugin/src/main/kotlin/com/vanniktech/maven/publish/SonatypeHost.kt @@ -1,5 +1,6 @@ package com.vanniktech.maven.publish +import java.io.Serializable import org.gradle.api.provider.Provider /** @@ -8,12 +9,9 @@ import org.gradle.api.provider.Provider * * https://central.sonatype.org/articles/2021/Feb/23/new-users-on-s01osssonatypeorg/ */ -enum class SonatypeHost( +data class SonatypeHost( internal val rootUrl: String -) { - DEFAULT("https://oss.sonatype.org"), - S01("https://s01.oss.sonatype.org"); - +) : Serializable { internal fun apiBaseUrl(): String { return "$rootUrl/service/local/" } @@ -28,4 +26,19 @@ enum class SonatypeHost( "$rootUrl/service/local/staging/deployByRepositoryId/${stagingRepositoryId.get()}/" } } + + companion object { + @JvmStatic + fun valueOf(sonatypeHost: String): SonatypeHost = when (sonatypeHost) { + "DEFAULT" -> DEFAULT + "S01" -> S01 + else -> throw IllegalArgumentException("No SonatypeHost constant $sonatypeHost") + } + + @JvmField + val DEFAULT = SonatypeHost("https://oss.sonatype.org") + + @JvmField + val S01 = SonatypeHost("https://s01.oss.sonatype.org") + } }