From 044a2fd01f1b96c51bac3563117821b83ab2cd54 Mon Sep 17 00:00:00 2001 From: Nariman Abdullin Date: Mon, 31 Jul 2023 14:26:16 +0300 Subject: [PATCH] Fixed order in plugins to fix publishing --- build.gradle.kts | 7 +- ....gradle.kts => PublishingConfiguration.kt} | 88 ++++++++++--------- 2 files changed, 51 insertions(+), 44 deletions(-) rename buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/{publishing-configuration.gradle.kts => PublishingConfiguration.kt} (81%) diff --git a/build.gradle.kts b/build.gradle.kts index 917e3fe..ceb9b85 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ +import com.saveourtool.osv4k.buildutils.configurePublishing import com.saveourtool.osv4k.buildutils.createDetektTask plugins { id("com.saveourtool.osv4k.buildutils.kotlin-library") - id("com.saveourtool.osv4k.buildutils.publishing-configuration") } group = "com.saveourtool.osv4k" @@ -11,8 +11,6 @@ repositories { mavenCentral() } -createDetektTask() - kotlin { jvm { withJava() @@ -61,6 +59,9 @@ kotlin { } } +createDetektTask() +configurePublishing() + setOf("compileJava", "compileTestJava").forEach { taskName -> tasks.named(taskName) { sourceCompatibility = "1.8" diff --git a/buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/publishing-configuration.gradle.kts b/buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/PublishingConfiguration.kt similarity index 81% rename from buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/publishing-configuration.gradle.kts rename to buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/PublishingConfiguration.kt index 0eb6df3..9f59f4b 100644 --- a/buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/publishing-configuration.gradle.kts +++ b/buildSrc/src/main/kotlin/com/saveourtool/osv4k/buildutils/PublishingConfiguration.kt @@ -1,38 +1,47 @@ +/** + * Publishing configuration file. + */ + package com.saveourtool.osv4k.buildutils import io.github.gradlenexus.publishplugin.NexusPublishExtension import io.github.gradlenexus.publishplugin.NexusPublishPlugin +import org.gradle.api.Named +import org.gradle.api.Project +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.AbstractPublishToMaven +import org.gradle.api.publish.maven.tasks.PublishToMavenRepository import org.gradle.internal.logging.text.StyledTextOutput import org.gradle.internal.logging.text.StyledTextOutput.Style.Failure import org.gradle.internal.logging.text.StyledTextOutput.Style.Identifier import org.gradle.internal.logging.text.StyledTextOutput.Style.Info import org.gradle.internal.logging.text.StyledTextOutput.Style.Success import org.gradle.internal.logging.text.StyledTextOutputFactory +import org.gradle.jvm.tasks.Jar +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.extra +import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.support.serviceOf +import org.gradle.kotlin.dsl.withType import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform - -plugins { - `maven-publish` - signing - id("org.jetbrains.dokka") -} - -group = rootProject.group -version = rootProject.version - -configurePublishing() +import org.gradle.plugins.signing.Sign +import org.gradle.plugins.signing.SigningExtension +import org.gradle.plugins.signing.SigningPlugin /** * Configures all aspects of the publishing process. */ fun Project.configurePublishing() { + apply() configureNexusPublishing() configureGitHubPublishing() + configurePublications() - apply() apply() - - configurePublications() configureSigning() // https://kotlinlang.org/docs/mpp-publish-lib.html#avoid-duplicate-publications @@ -68,12 +77,8 @@ fun Project.configurePublishing() { */ @Suppress("TOO_LONG_FUNCTION") fun Project.configureNexusPublishing() { - System.getenv("OSSRH_USERNAME")?.let { sonatypeUsername -> - extra.set("sonatypeUsername", sonatypeUsername) - } - System.getenv("OSSRH_PASSWORD")?.let { sonatypePassword -> - extra.set("sonatypePassword", sonatypePassword) - } + setPropertyFromEnv("OSSRH_USERNAME", "sonatypeUsername") + setPropertyFromEnv("OSSRH_PASSWORD", "sonatypePassword") if (!hasProperties("sonatypeUsername", "sonatypePassword")) { styledOut(logCategory = "nexus") @@ -94,7 +99,7 @@ fun Project.configureNexusPublishing() { apply() configure { - this@configure.repositories { + repositories { sonatype { /* * The default is https://oss.sonatype.org/service/local/. @@ -114,19 +119,20 @@ fun Project.configureNexusPublishing() { /** * Configures GitHub Packages as the publish destination. */ -fun Project.configureGitHubPublishing(): Unit = - publishing { - repositories { - maven { - name = "GitHub" - url = uri("https://maven.pkg.github.com/saveourtool/osv4k") - credentials { - username = findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR") - password = findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN") - } +fun Project.configureGitHubPublishing() { + configure { + repositories { + maven { + name = "GitHub" + url = uri("https://maven.pkg.github.com/saveourtool/osv4k") + credentials { + username = findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR") + password = findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN") } } } + } +} /** * Configures all publications. The publications must already exist. @@ -176,12 +182,8 @@ fun Project.configurePublications() { * Should be explicitly called after each custom `publishing {}` section. */ fun Project.configureSigning() { - System.getenv("GPG_SEC")?.let { - extra.set("signingKey", it) - } - System.getenv("GPG_PASSWORD")?.let { - extra.set("signingPassword", it) - } + setPropertyFromEnv("GPG_SEC", "signingKey") + setPropertyFromEnv("GPG_PASSWORD", "signingPassword") if (hasProperty("signingKey")) { /* @@ -257,8 +259,7 @@ fun Project.configureSigningCommon(useKeys: SigningExtension.() -> Unit = {}) { * @param logCategory * @return [StyledTextOutput] */ -fun Project.styledOut(logCategory: String): StyledTextOutput = - serviceOf().create(logCategory) +private fun Project.styledOut(logCategory: String): StyledTextOutput = serviceOf().create(logCategory) /** * Determines if this project has all the given properties. @@ -267,5 +268,10 @@ fun Project.styledOut(logCategory: String): StyledTextOutput = * @return `true` if this project has all the given properties, `false` otherwise. * @see Project.hasProperty */ -fun Project.hasProperties(vararg propertyNames: String): Boolean = - propertyNames.asSequence().all(this::hasProperty) +private fun Project.hasProperties(vararg propertyNames: String): Boolean = propertyNames.asSequence().all(this::hasProperty) + +private fun Project.setPropertyFromEnv(envName: String, propertyName: String) { + System.getenv(envName)?.let { + extra.set(propertyName, it) + } +}