Skip to content

Commit c5d7d4c

Browse files
authored
Ease deployments of Snapshots (#9)
* Ease snapshot creation on local envs * Enforce -PPUBLISH_VERSION usage instead of gradle.properties or fallbacks
1 parent 7131790 commit c5d7d4c

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

gradle/publishing.gradle.kts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
// Shared publishing configuration for Vanniktech Maven Publish plugin
22
// Secrets are loaded from ~/.gradle/gradle.properties (see README for required keys)
33

4-
// Get version from PUBLISH_VERSION property or fall back to navEntryScopeVersion
5-
val publishVersion = providers.gradleProperty("PUBLISH_VERSION").orNull
6-
?: project.property("navEntryScopeVersion") as String
4+
// Version must be provided via -PPUBLISH_VERSION when publishing to Maven Central
5+
val isMavenCentralPublish = gradle.startParameter.taskNames.any {
6+
it.contains("publish", ignoreCase = true) && !it.contains("Local", ignoreCase = true)
7+
}
8+
val publishVersion = if (isMavenCentralPublish) {
9+
providers.gradleProperty("PUBLISH_VERSION").orNull
10+
?: error("PUBLISH_VERSION property is required. Use -PPUBLISH_VERSION=x.y.z-SNAPSHOT")
11+
} else {
12+
providers.gradleProperty("PUBLISH_VERSION").orNull ?: "LOCAL"
13+
}
714
project.extra.set("publishVersion", publishVersion)
815

16+
// Check if this is a SNAPSHOT version
17+
val isSnapshot = publishVersion.endsWith("-SNAPSHOT")
18+
project.extra.set("isSnapshot", isSnapshot)
19+
920
// Support both in-memory signing (CI) and file-based signing (local)
1021
val hasSigningCredentials = project.findProperty("signingInMemoryKey") != null
1122
|| project.findProperty("signing.secretKeyRingFile") != null
1223
project.extra.set("hasSigningCredentials", hasSigningCredentials)
1324

25+
1426
// Shared POM configuration function - available via extra properties
1527
project.extra.set("configurePom") { pom: org.gradle.api.publish.maven.MavenPom ->
1628
pom.apply {

nav-entry-scope/lib/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,17 @@ extra["navEntryScopeVersion"] = libs.versions.navEntryScope.get()
6363
apply(from = rootProject.file("gradle/publishing.gradle.kts"))
6464

6565
val hasSigningCredentials = extra["hasSigningCredentials"] as Boolean
66+
val isSnapshot = extra["isSnapshot"] as Boolean
6667
@Suppress("UNCHECKED_CAST")
6768
val configurePom = extra["configurePom"] as (MavenPom) -> Unit
6869

6970
mavenPublishing {
7071
configure(AndroidSingleVariantLibrary(variant = "release", sourcesJar = true, publishJavadocJar = true))
7172

72-
if (hasSigningCredentials) {
73+
// SNAPSHOTs can be published without signing; release versions require signing
74+
if (isSnapshot) {
75+
publishToMavenCentral()
76+
} else if (hasSigningCredentials) {
7377
publishToMavenCentral()
7478
signAllPublications()
7579
}

nav-entry-scope/processor/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@ extra["navEntryScopeVersion"] = libs.versions.navEntryScope.get()
2929
apply(from = rootProject.file("gradle/publishing.gradle.kts"))
3030

3131
val hasSigningCredentials = extra["hasSigningCredentials"] as Boolean
32+
val isSnapshot = extra["isSnapshot"] as Boolean
3233
@Suppress("UNCHECKED_CAST")
3334
val configurePom = extra["configurePom"] as (MavenPom) -> Unit
3435

3536
mavenPublishing {
3637
configure(JavaLibrary(javadocJar = JavadocJar.Javadoc(), sourcesJar = true))
3738

38-
if (hasSigningCredentials) {
39+
// SNAPSHOTs can be published without signing; release versions require signing
40+
if (isSnapshot) {
41+
publishToMavenCentral()
42+
} else if (hasSigningCredentials) {
3943
publishToMavenCentral()
4044
signAllPublications()
4145
}

0 commit comments

Comments
 (0)