11plugins {
22 alias(libs.plugins.android.library)
33 alias(libs.plugins.kotlin.android)
4+ alias(libs.plugins.nmcp)
45 id(" maven-publish" )
56 id(" signing" )
67}
@@ -107,26 +108,7 @@ publishing {
107108 }
108109
109110 repositories {
110- // Local Maven
111- maven {
112- name = " local"
113- url = uri(layout.buildDirectory.dir(" repo" ))
114- }
115-
116- // Sonatype OSSRH
117- maven {
118- name = " sonatype"
119- val releasesRepoUrl = uri(" https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" )
120- val snapshotsRepoUrl = uri(" https://s01.oss.sonatype.org/content/repositories/snapshots/" )
121- url = if (version.toString().endsWith(" SNAPSHOT" )) snapshotsRepoUrl else releasesRepoUrl
122-
123- credentials {
124- username = findProperty(" SONATYPE_USERNAME" ) as String? ? : System .getenv(" SONATYPE_USERNAME" )
125- password = findProperty(" SONATYPE_PASSWORD" ) as String? ? : System .getenv(" SONATYPE_PASSWORD" )
126- }
127- }
128-
129- // GitHub Packages
111+ // GitHub Packages (optional)
130112 maven {
131113 name = " GitHubPackages"
132114 url = uri(" https://maven.pkg.github.com/pelagornis/kotlin-rex" )
@@ -138,27 +120,27 @@ publishing {
138120 }
139121}
140122
141- // Signing Configuration
123+ // Signing Configuration (for Maven Central)
142124signing {
143- isRequired = gradle.taskGraph.allTasks.any {
144- it.name.contains(" publishReleasePublicationToSonatypeRepository" ) ||
145- it.name.contains(" publishReleasePublicationToGitHubPackagesRepository" )
125+ val signingKey = findProperty(" signingKey" ) as String? ? : System .getenv(" ORG_GRADLE_PROJECT_signingKey" )
126+ val signingPassword = findProperty(" signingPassword" ) as String? ? : System .getenv(" ORG_GRADLE_PROJECT_signingPassword" )
127+
128+ if (! signingKey.isNullOrEmpty() && ! signingPassword.isNullOrEmpty()) {
129+ // In-memory signing (for CI/CD)
130+ useInMemoryPgpKeys(signingKey, signingPassword)
131+ } else {
132+ // Use GPG agent for local signing
133+ useGpgCmd()
146134 }
147135
148- if (isRequired) {
149- val signingKey = findProperty(" signingKey" ) as String? ? : System .getenv(" ORG_GRADLE_PROJECT_signingKey" )
150- val signingPassword = findProperty(" signingPassword" ) as String? ? : System .getenv(" ORG_GRADLE_PROJECT_signingPassword" )
151-
152- if (! signingKey.isNullOrEmpty() && ! signingPassword.isNullOrEmpty()) {
153- useInMemoryPgpKeys(signingKey, signingPassword)
154- } else {
155- useGpgCmd()
156- }
157-
158- sign(publishing.publications[" release" ])
159- }
136+ sign(publishing.publications[" release" ])
160137}
161138
139+ // Maven Central Publishing via Central Portal API
140+ // https://central.sonatype.com/api/v1/
141+ // The nmcp plugin automatically uploads to Central Portal API
142+ // It reads SONATYPE_USERNAME and SONATYPE_PASSWORD from environment variables
143+
162144// Debug Task
163145tasks.register(" printPublicationInfo" ) {
164146 doLast {
0 commit comments