Skip to content
This repository has been archived by the owner on Aug 10, 2024. It is now read-only.

Prepare for Sonaype release #324

Merged
merged 2 commits into from
Oct 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package buildsrc.conventions

import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
Expand All @@ -14,6 +13,10 @@ kotlin {
jvmToolchain(projectJvmVersion)
}

java {
withSourcesJar()
}

tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "$projectJvmVersion"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,36 @@ package buildsrc.conventions
plugins {
id("buildsrc.conventions.base")
`maven-publish`
signing
}

publishing {

val signingKeyId = providers.gradleProperty("signingKeyId")
val signingPassword = providers.gradleProperty("signingPassword")
val signingSecretKeyRingFile = providers.gradleProperty("signingSecretKeyRingFile")

val signingPropertiesPresent = provider {
signingKeyId.isPresent && signingPassword.isPresent && signingSecretKeyRingFile.isPresent
}

val ossrhUsername = providers.gradleProperty("ossrhUsername")
val ossrhPassword = providers.gradleProperty("ossrhPassword")

val isSnapshotVersion = provider { version.toString().endsWith("SNAPSHOT") }


val javadocJarStub by tasks.creating(Jar::class) {
group = JavaBasePlugin.DOCUMENTATION_GROUP
description = "Stub empty javadoc.jar artifact (a Javadoc jar is required by Maven Central)"
archiveClassifier.set("javadoc")
}


publishing {
publications.withType<MavenPublication>().configureEach {

artifact(javadocJarStub)

// apply default configs for all Maven publications
pom {
scm {
Expand All @@ -25,9 +50,30 @@ publishing {
maven(rootProject.layout.buildDirectory.dir("maven-project-local")) {
name = "MavenProjectLocal"
}

if (ossrhUsername.isPresent && ossrhPassword.isPresent) {
maven("https://oss.sonatype.org/content/repositories/snapshots/") {
name = "SonartypeStaging"
credentials {
username = ossrhUsername.get()
password = ossrhPassword.get()
}
}

if (!isSnapshotVersion.get()) {
maven("https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
name = "SonatypeProduction"
credentials {
username = ossrhUsername.get()
password = ossrhPassword.get()
}
}
}
}
}
}


plugins.withType<JavaPlugin>().configureEach {
// only create a Java publication when the Java plugin is applied
publishing {
Expand All @@ -38,3 +84,23 @@ plugins.withType<JavaPlugin>().configureEach {
}
}
}

tasks.withType<AbstractPublishToMaven>().configureEach {
// Gradle warns about some signing tasks using publishing task outputs without explicit dependencies.
// Here's a quick fix.
dependsOn(tasks.withType<Sign>())
mustRunAfter(tasks.withType<Sign>())

doLast {
logger.lifecycle("[task: ${[email protected]}] ${publication.groupId}:${publication.artifactId}:${publication.version}")
}
}

signing {
if (signingPropertiesPresent.get()) {
logger.debug("[${project.displayName}] Signing is enabled")
useGpgCmd()
useInMemoryPgpKeys(signingKeyId.get(), signingPassword.get())
sign(publishing.publications)
}
}