diff --git a/buildSrc/src/main/kotlin/pluginMarkers.kt b/buildSrc/src/main/kotlin/pluginMarkers.kt index 181bfe02665..76be460c42b 100644 --- a/buildSrc/src/main/kotlin/pluginMarkers.kt +++ b/buildSrc/src/main/kotlin/pluginMarkers.kt @@ -9,12 +9,16 @@ import org.gradle.api.Project import org.gradle.api.publish.PublicationContainer import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication +import org.gradle.api.publish.maven.tasks.PublishToMavenRepository import org.gradle.api.tasks.bundling.Jar import org.gradle.kotlin.dsl.* import plugins.KotlinBuildPublishingPlugin +import plugins.configureRepository +import java.util.* internal const val PLUGIN_MARKER_SUFFIX = ".gradle.plugin" +@UseExperimental(ExperimentalStdlibApi::class) fun Project.publishPluginMarkers(withEmptyJars: Boolean = true) { val pluginDevelopment = extensions.getByType() val publishingExtension = extensions.getByType() @@ -25,6 +29,10 @@ fun Project.publishPluginMarkers(withEmptyJars: Boolean = true) { if (withEmptyJars) { addEmptyJarArtifacts(markerPublication) } + + tasks.named( + "publish${markerPublication.name.capitalize(Locale.ROOT)}PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository" + ).configureRepository() } } diff --git a/buildSrc/src/main/kotlin/plugins/KotlinBuildPublishingPlugin.kt b/buildSrc/src/main/kotlin/plugins/KotlinBuildPublishingPlugin.kt index 26bc83fb1c7..7af6501a839 100644 --- a/buildSrc/src/main/kotlin/plugins/KotlinBuildPublishingPlugin.kt +++ b/buildSrc/src/main/kotlin/plugins/KotlinBuildPublishingPlugin.kt @@ -15,9 +15,11 @@ import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.publish.maven.plugins.MavenPublishPlugin import org.gradle.api.publish.maven.tasks.PublishToMavenRepository +import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.* import org.gradle.plugins.signing.SigningExtension import org.gradle.plugins.signing.SigningPlugin +import java.net.URI import java.util.* import javax.inject.Inject @@ -119,25 +121,8 @@ class KotlinBuildPublishingPlugin @Inject constructor( dependsOn(tasks.named("publishToMavenLocal")) } - tasks.named("publish${PUBLICATION_NAME}PublicationTo${REPOSITORY_NAME}Repository") { - dependsOn(project.rootProject.tasks.named("preparePublication")) - doFirst { - val preparePublication = project.rootProject.tasks.named("preparePublication").get() - val username: String? by preparePublication.extra - val password: String? by preparePublication.extra - val repoUrl: String by preparePublication.extra - - repository.apply { - url = uri(repoUrl) - if (url.scheme != "file" && username != null && password != null) { - credentials { - this.username = username - this.password = password - } - } - } - } - } + tasks.named("publish${PUBLICATION_NAME}PublicationTo${REPOSITORY_NAME}Repository") + .configureRepository() } companion object { @@ -152,4 +137,24 @@ class KotlinBuildPublishingPlugin @Inject constructor( fun humanReadableName(project: Project) = project.name.split("-").joinToString(separator = " ") { it.capitalize(Locale.ROOT) } } +} + +fun TaskProvider.configureRepository() = configure { + dependsOn(project.rootProject.tasks.named("preparePublication")) + doFirst { + val preparePublication = project.rootProject.tasks.named("preparePublication").get() + val username: String? by preparePublication.extra + val password: String? by preparePublication.extra + val repoUrl: String by preparePublication.extra + + repository.apply { + url = URI(repoUrl) + if (url.scheme != "file" && username != null && password != null) { + credentials { + this.username = username + this.password = password + } + } + } + } } \ No newline at end of file