Skip to content

Commit 6e068ae

Browse files
committed
chore: major refactor to Maven publishing plugin
1 parent 9003c16 commit 6e068ae

File tree

6 files changed

+49
-80
lines changed

6 files changed

+49
-80
lines changed

gradle/build-logic/src/main/kotlin/settings.repo.settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.gradle.toolchains.foojay.FoojayToolchainResolver
55
import org.tomlj.Toml
66

77
val versionCatalog by lazy {
8-
// A hack to read version catalog from settings
8+
// A hack to read version-catalog from settings
99
runCatching {
1010
Toml.parse(file("$rootDir/gradle/libs.versions.toml").readText()).getTable("versions")
1111
}

gradle/libs.versions.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ swagger-style = "https://unpkg.com/[email protected]/them
218218
benmanes = "0.52.0"
219219
foojay-resolver = "0.10.0"
220220
gradle-develocity = "4.0.1"
221-
nmcp = "0.1.1"
221+
nmcp = "0.1.2"
222222
nexus-publish = "2.0.0"
223223
vanniktech-publish = "0.31.0"
224224
gradle-publish = "1.3.1"
@@ -714,7 +714,8 @@ sigstore = { id = "dev.sigstore.sign"
714714
sigstore-base = { id = "dev.sigstore.sign-base" , version.ref = "sigstore" }
715715
buildkonfig = { id = "com.codingfeline.buildkonfig" , version.ref = "buildkonfig"}
716716
detekt = { id = "io.github.detekt.gradle.compiler-plugin" , version.ref = "detekt"}
717-
nmcp = { id = "com.gradleup.nmcp" , version.ref = "nmcp"}
717+
nmcp-project = { id = "com.gradleup.nmcp" , version.ref = "nmcp"}
718+
nmcp-aggregation = { id = "com.gradleup.nmcp.aggregation" , version.ref = "nmcp"}
718719
vanniktech-publish = { id = "com.vanniktech.maven.publish" , version.ref = "vanniktech-publish" }
719720
gradle-publish = { id = "com.gradle.plugin-publish" , version.ref = "gradle-publish" }
720721
kobweb-application = { id = "com.varabyte.kobweb.application" , version.ref = "kobweb" }

plugins/project/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ dependencies {
9999
implementation(libs.plugins.jetbrains.dokka.dep)
100100
implementation(libs.plugins.graalvm.nativeimage.dep)
101101
implementation(libs.plugins.redacted.dep)
102-
implementation(libs.plugins.nmcp.dep)
103102
implementation(libs.plugins.spotless.dep)
104103
implementation(libs.plugins.shadow.dep)
105104
implementation(libs.plugins.mrjar.dep)
@@ -111,8 +110,9 @@ dependencies {
111110
implementation(libs.plugins.jib.dep)
112111
implementation(libs.plugins.modulegraph.dep)
113112
implementation(libs.plugins.kopy.dep)
114-
implementation(libs.jib.nativeimage.extn)
115113
implementation(libs.plugins.github.changelog.dep)
114+
implementation(libs.plugins.vanniktech.publish.dep)
115+
implementation(libs.jib.nativeimage.extn)
116116
implementation(libs.kmpmt)
117117
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
118118
// implementation(libs.plugins.nexus.publish.dep)

plugins/project/src/main/kotlin/common/ProjectExtns.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,18 @@ val Project.isNativeTargetEnabled: Boolean
8585
val Project.isWinTargetEnabled: Boolean
8686
get() = gradleBooleanProp("kotlin.target.win.enabled").get()
8787

88+
val Project.isComposeModuleEnabled: Boolean
89+
get() = gradleBooleanProp("module.compose.enabled").get()
90+
91+
val Project.isBootModuleEnabled: Boolean
92+
get() = gradleBooleanProp("module.boot.enabled").get()
93+
94+
val Project.isMvnSnapshotRepoEnabled: Boolean
95+
get() = gradleBooleanProp("maven.snapshot.repo.enabled").get()
96+
97+
val Project.isAutomaticModuleEnabled
98+
get() = gradleBooleanProp("java.automatic.module.enabled").get()
99+
88100
/** Java version properties. */
89101
val Project.javaVersion
90102
get() = libs.versions.java.asProvider().map { JavaVersion.toVersion(it) }
@@ -101,9 +113,6 @@ val Project.toolchainVendor
101113
val Project.addModules
102114
get() = libs.versions.java.addModules.get()
103115

104-
val Project.isAutomaticModuleEnabled
105-
get() = gradleBooleanProp("java.automatic.module.enabled").get()
106-
107116
val Project.defaultJarManifest
108117
get() = buildMap {
109118
put("Enable-Native-Access", "ALL-UNNAMED")

plugins/project/src/main/kotlin/dev.suresh.plugin.publishing.gradle.kts

Lines changed: 21 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
import com.google.cloud.tools.jib.gradle.JibExtension
2+
import com.vanniktech.maven.publish.SonatypeHost
23
import common.*
34
import java.time.Year
45
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink
56

6-
plugins {
7-
`maven-publish`
8-
signing
9-
com.gradleup.nmcp
10-
}
7+
plugins { com.vanniktech.maven.publish }
118

129
group = libs.versions.group.get()
1310

@@ -31,99 +28,55 @@ publishing {
3128
publications {
3229
// Kotlin Multiplatform
3330
pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
34-
val javadocJar by
35-
tasks.registering(Jar::class) {
36-
archiveClassifier = "javadoc"
37-
duplicatesStrategy = DuplicatesStrategy.WARN
38-
// Contents are deliberately left empty
39-
// from(tasks.named("dokkaJavadoc"))
40-
}
41-
42-
// KMP will automatically create the publications
43-
withType<MavenPublication>().configureEach {
44-
artifact(javadocJar)
45-
configurePom()
46-
}
31+
// withType<MavenPublication>().configureEach { artifact(taskName..) }
4732
}
4833

4934
// Kotlin JVM ("org.jetbrains.kotlin.jvm")
5035
pluginManager.withPlugin("java") {
51-
register<MavenPublication>("maven") {
52-
from(components["java"])
53-
configurePom()
54-
}
36+
register<MavenPublication>("maven") { from(components["java"]) }
5537

56-
// Add an executable artifact if exists
5738
withType<MavenPublication>().configureEach {
5839
// configurations.findByName("customFile")?.artifacts?.forEach { artifact(it) }
5940

41+
// Add an executable artifact if exists
6042
// val execJar = tasks.findByName("buildExecutable") as? ReallyExecJar
61-
// if (execJar != null) {
62-
// artifact(execJar.execJarFile)
63-
// }
43+
// if (execJar != null) { artifact(execJar.execJarFile) }
6444
}
6545
}
6646

6747
// Java Platform (BOM)
6848
pluginManager.withPlugin("java-platform") {
69-
register<MavenPublication>("maven") {
70-
from(components["javaPlatform"])
71-
configurePom()
72-
}
49+
register<MavenPublication>("maven") { from(components["javaPlatform"]) }
7350
}
7451

7552
// Gradle version catalog
7653
pluginManager.withPlugin("version-catalog") {
77-
register<MavenPublication>("maven") {
78-
from(components["versionCatalog"])
79-
configurePom()
80-
}
54+
register<MavenPublication>("maven") { from(components["versionCatalog"]) }
8155
}
8256

83-
// Add Dokka html doc to all publications
84-
pluginManager.withPlugin("org.jetbrains.dokka") {
85-
val dokkaGenerateJar by
86-
tasks.registering(Jar::class) {
87-
from(tasks.named("dokkaGenerate"))
88-
archiveClassifier = "html-docs"
57+
// Configures GHCR credentials for Jib
58+
pluginManager.withPlugin("com.google.cloud.tools.jib") {
59+
configure<JibExtension> {
60+
to {
61+
if (image.orEmpty().startsWith("ghcr.io", ignoreCase = true)) {
62+
auth {
63+
username = githubPackagesUsername.orNull
64+
password = githubPackagesPassword.orNull
65+
}
8966
}
90-
91-
withType<MavenPublication>().configureEach { artifact(dokkaGenerateJar) }
92-
}
93-
}
94-
}
95-
96-
// Configures GHCR credentials for Jib
97-
pluginManager.withPlugin("com.google.cloud.tools.jib") {
98-
configure<JibExtension> {
99-
to {
100-
if (image.orEmpty().startsWith("ghcr.io", ignoreCase = true)) {
101-
auth {
102-
username = githubPackagesUsername.orNull
103-
password = githubPackagesPassword.orNull
10467
}
10568
}
10669
}
10770
}
10871
}
10972

110-
signing {
111-
setRequired { hasSigningKey }
112-
if (hasSigningKey) {
113-
useInMemoryPgpKeys(
114-
signingInMemoryKeyId.orNull, signingInMemoryKey.orNull, signingInMemoryKeyPassword.orNull)
115-
sign(publishing.publications)
116-
}
117-
}
73+
mavenPublishing {
74+
publishToMavenCentral(host = SonatypeHost.CENTRAL_PORTAL, automaticRelease = true)
11875

119-
nmcp {
120-
centralPortal {
121-
username = mavenCentralUsername
122-
password = mavenCentralPassword
76+
if (hasSigningKey) {
77+
signAllPublications()
12378
}
124-
}
12579

126-
fun MavenPublication.configurePom() {
12780
pom {
12881
name = provider { "${project.group}:${project.name}" }
12982
description = provider { project.description }

plugins/settings/src/main/kotlin/common/SettingsExtns.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ val Settings.isNativeTargetEnabled: Boolean
1212
val Settings.isWinTargetEnabled: Boolean
1313
get() = gradleBooleanProp("kotlin.target.win.enabled").get()
1414

15-
val Settings.isComposeEnabled: Boolean
16-
get() = gradleBooleanProp("compose.enabled").get()
15+
val Settings.isComposeModuleEnabled: Boolean
16+
get() = gradleBooleanProp("module.compose.enabled").get()
1717

18-
val Settings.isSpringBootEnabled: Boolean
19-
get() = gradleBooleanProp("springboot.enabled").get()
18+
val Settings.isBootModuleEnabled: Boolean
19+
get() = gradleBooleanProp("module.boot.enabled").get()
20+
21+
val Settings.isMvnSnapshotRepoEnabled: Boolean
22+
get() = gradleBooleanProp("maven.snapshot.repo.enabled").get()
23+
24+
val Settings.isAutomaticModuleEnabled: Boolean
25+
get() = gradleBooleanProp("java.automatic.module.enabled").get()

0 commit comments

Comments
 (0)