diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 1bc7902b..dc0381a2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,6 +9,7 @@ val androidGradle = "8.9.2" val kotlinxKover = "0.9.1" val dokka = "2.0.0" val binaryCompatibilityValidator = "0.17.0" +val jreleaserVersion = "1.17.0" dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:$kotlinPluginVersion")) @@ -21,4 +22,7 @@ dependencies { implementation("org.jetbrains.dokka:dokka-gradle-plugin:$dokka") implementation("org.jetbrains.kotlinx:binary-compatibility-validator:$binaryCompatibilityValidator") + + + implementation("org.jreleaser:jreleaser-gradle-plugin:$jreleaserVersion") } diff --git a/buildSrc/src/main/kotlin/buildsrc/convention/mockk-publishing.gradle.kts b/buildSrc/src/main/kotlin/buildsrc/convention/mockk-publishing.gradle.kts index bb1bd10e..16e5b37c 100644 --- a/buildSrc/src/main/kotlin/buildsrc/convention/mockk-publishing.gradle.kts +++ b/buildSrc/src/main/kotlin/buildsrc/convention/mockk-publishing.gradle.kts @@ -1,67 +1,32 @@ package buildsrc.convention import buildsrc.config.createMockKPom -import buildsrc.config.credentialsAction - -plugins { - `maven-publish` - signing -} - -val sonatypeRepositoryCredentials: Provider> = - providers.credentialsAction("ossrh") - -val sonatypeRepositoryReleaseUrl: Provider = provider { - if (version.toString().endsWith("SNAPSHOT")) { - "https://oss.sonatype.org/content/repositories/snapshots/" - } else { - "https://oss.sonatype.org/service/local/staging/deploy/maven2/" - } -} - -val signingKeyId: Provider = - providers.gradleProperty("signing.keyId") val signingPassword: Provider = providers.gradleProperty("signing.password") -val signingSecretKeyRingFile: Provider = - providers.gradleProperty("signing.secretKeyRingFile") +val jreleaserPublicKey: Provider = + providers.gradleProperty("jreleaser.public.key") +val jreleaserPrivateKey: Provider = + providers.gradleProperty("jreleaser.private.key") val ossrhUsername: Provider = providers.gradleProperty("ossrhUsername") val ossrhPassword: Provider = providers.gradleProperty("ossrhPassword") +val mavenName: String by project.extra +val mavenDescription: String by project.extra -tasks.withType().configureEach { - // Gradle warns about some signing tasks using publishing task outputs without explicit - // dependencies. Here's a quick fix. - dependsOn(tasks.withType()) - mustRunAfter(tasks.withType()) +// workaround for https://github.com/gradle/gradle/issues/16543 +inline fun TaskContainer.provider(taskName: String): Provider = + providers.provider { taskName } + .flatMap { named(it) } - doLast { - logger.lifecycle("[task: ${name}] ${publication.groupId}:${publication.artifactId}:${publication.version}") - } +plugins { + `maven-publish` + id("org.jreleaser") } -val mavenName: String by project.extra -val mavenDescription: String by project.extra -val localrepo: String by project - publishing { - repositories { - // publish to local dir, for testing - /*maven(rootProject.layout.projectDirectory.dir(localrepo)) { - name = "LocalRepo" - }*/ - - maven { - url = uri(sonatypeRepositoryReleaseUrl) - credentials { - username = ossrhUsername.get() - password = ossrhPassword.get() - } - } - } // Configure for Android libraries publications { if (project.extensions.findByName("android") != null) { @@ -80,20 +45,46 @@ publishing { artifact(tasks.provider("javadocJar")) - if (signingKeyId.isPresent && signingSecretKeyRingFile.isPresent && signingPassword.isPresent) { - signing.sign(this) + repositories { + maven { + url = layout.buildDirectory.dir("staging-deploy").get().asFile.toURI() + } } - } } -signing { - if (signingKeyId.isPresent && signingSecretKeyRingFile.isPresent && signingPassword.isPresent) { - logger.debug("[${project.displayName}] Signing is enabled") +jreleaser { + gitRootSearch = true + //dryrun = true + deploy { + maven { + mavenCentral { + active.set(org.jreleaser.model.Active.ALWAYS) + register("sonatype") { + active = org.jreleaser.model.Active.ALWAYS + url = "https://central.sonatype.com/api/v1/publisher" + stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.path) + username = ossrhUsername + password = ossrhPassword + verifyPom.set(false) + } + } + } + } + signing { + active.set(org.jreleaser.model.Active.ALWAYS) + armored.set(true) + mode.set(org.jreleaser.model.Signing.Mode.FILE) + passphrase.set(signingPassword) + publicKey.set(jreleaserPublicKey) + secretKey.set(jreleaserPrivateKey) } -} -// workaround for https://github.com/gradle/gradle/issues/16543 -inline fun TaskContainer.provider(taskName: String): Provider = - providers.provider { taskName } - .flatMap { named(it) } + release { + github { + enabled = false + skipRelease = true + skipTag = true + } + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index bc976859..ea335155 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,14 @@ -version=1.14.4-SNAPSHOT +version=1.14.5-SNAPSHOT # Enable Gradle build cache https://docs.gradle.org/current/userguide/build_cache.html org.gradle.caching=true org.gradle.configureondemand=false -org.gradle.parallel=false +org.gradle.parallel=true # disable annoying Gradle Welcome in CI/CD org.gradle.welcome=never org.gradle.jvmargs=-XX:MaxMetaspaceSize=768m kotlin.mpp.stability.nowarn=true localrepo=build/maven-local-repo -#org.jetbrains.dokka.experimental.gradle.pluginMode=V2EnabledWithHelpers +org.jetbrains.dokka.experimental.gradle.pluginMode=V2EnabledWithHelpers ######################## # version of Java that will be used to build the project io_mockk_java_toolchain_main_version=17