Skip to content

Commit 4e5c8e1

Browse files
committed
build: adapt to sonatype's new maven-central-deployment-shenanigans
1 parent e2a6ea3 commit 4e5c8e1

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ bin/
66
.recommenders/
77
.classpath
88
.project
9+
gradle.properties

publishing-build.gradle

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22
apply plugin: 'maven-publish'
33
apply plugin: 'signing'
44

5+
import java.net.URI
6+
import java.net.http.HttpClient
7+
import java.net.http.HttpRequest
8+
import java.net.http.HttpResponse
9+
import java.net.http.HttpRequest.BodyPublishers
10+
import java.net.http.HttpResponse.BodyHandlers
11+
import java.util.Base64
12+
513
// Configure these in your $USER_HOME/.gradle/gradle.properties
614
if (!project.hasProperty("sonatypeUsername")) {
715
ext.sonatypeUsername = ''
@@ -67,7 +75,7 @@ publishing {
6775

6876
repositories {
6977
maven {
70-
url = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
78+
url = "https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/"
7179
credentials {
7280
username = sonatypeUsername
7381
password = sonatypePassword
@@ -80,3 +88,31 @@ signing {
8088
useGpgCmd()
8189
sign publishing.publications.mavenJava
8290
}
91+
92+
task finalizeMavenCentralPublish() {
93+
doLast {
94+
println "Finalizing maven central publish..."
95+
def url = 'https://ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/io.github.netmikey'
96+
97+
def client = HttpClient.newHttpClient()
98+
99+
def auth = "${sonatypeUsername}:${sonatypePassword}"
100+
def encodedAuth = Base64.encoder.encodeToString(auth.bytes)
101+
def authHeader = "Basic ${encodedAuth}"
102+
103+
def request = HttpRequest.newBuilder()
104+
.uri(URI.create(url))
105+
.header("Content-Type", "application/json")
106+
.header("Authorization", authHeader)
107+
.POST(BodyPublishers.ofString(""))
108+
.build()
109+
110+
def response = client.send(request, BodyHandlers.ofString())
111+
112+
println "Response Code: ${response.statusCode()}"
113+
println "Response Body:\n${response.body()}"
114+
println "Don't forget to publish the deployment on https://central.sonatype.com/publishing/deployments"
115+
}
116+
}
117+
118+
publish.finalizedBy(finalizeMavenCentralPublish)

0 commit comments

Comments
 (0)