Skip to content

Commit f58594a

Browse files
committed
chore(build): publish to maven central portal
1 parent 111ea07 commit f58594a

3 files changed

Lines changed: 83 additions & 30 deletions

File tree

.github/workflows/publish.yml

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ jobs:
99
name: Deploy to package index
1010
runs-on: ubuntu-24.04
1111
env:
12-
MAVEN_SNAPSHOTS_URL: ${{ secrets.OSSRH_SNAPSHOT_URL }}
13-
MAVEN_RELEASES_URL: ${{ secrets.OSSRH_RELEASE_URL }}
14-
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
15-
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
12+
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
13+
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}
14+
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PORTAL_PASSWORD }}
15+
JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_CENTRAL_PORTAL_USERNAME }}
16+
JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PORTAL_PASSWORD }}
17+
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
18+
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
19+
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
20+
JRELEASER_MAVENCENTRAL_STAGE: ${{ vars.MAVEN_CENTRAL_STAGE }} # Default is "FULL" https://jreleaser.org/guide/latest/reference/deploy/maven/maven-central.html#_staged_deployments
1621

1722
steps:
1823
- name: Checkout repository
@@ -24,14 +29,14 @@ jobs:
2429
distribution: zulu
2530
java-version: "8"
2631

27-
- name: Decode signing key ring
28-
run: |
29-
mkdir -p ~/.gradle
30-
echo "${{secrets.SIGNING_SECRET_KEY_RING_FILE}}" > ~/.gradle/secring.gpg.b64
31-
base64 -d ~/.gradle/secring.gpg.b64 > ~/.gradle/secring.gpg
32+
- name: Verify JReleaser configuration
33+
run: ./gradlew jreleaserConfig
3234

3335
- name: Clean build directory
3436
run: ./gradlew clean
3537

36-
- name: Publish
37-
run: ./gradlew publish -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=${{secrets.SIGNING_KEY_PASSWORD}} -Psigning.secretKeyRingFile=$(echo ~/.gradle/secring.gpg) --info --console plain
38+
- name: Publish (Stage to local directory)
39+
run: ./gradlew publish --info --console plain
40+
41+
- name: Deploy and release
42+
run: ./gradlew jreleaserFullRelease --stacktrace --info --console plain

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ To be able to install snapshot releases of the sdk an additional repository must
4747
<repository>
4848
<id>sonatype</id>
4949
<name>sonatype-snapshot</name>
50-
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
50+
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
5151
<snapshots>
5252
<enabled>true</enabled>
5353
</snapshots>
@@ -64,7 +64,7 @@ To be able to install snapshot releases of the sdk an additional repository must
6464
repositories {
6565
mavenCentral()
6666
maven {
67-
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
67+
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
6868
mavenContent {
6969
snapshotsOnly()
7070
}
@@ -270,7 +270,7 @@ The logger `com.factset.sdk.utils.authentication.ConfidentialClient` logs out th
270270

271271
# Copyright
272272

273-
Copyright 2024 FactSet Research Systems Inc
273+
Copyright 2025 FactSet Research Systems Inc
274274

275275
Licensed under the Apache License, Version 2.0 (the "License");
276276
you may not use this file except in compliance with the License.

build.gradle

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
import java.time.LocalDate
2+
3+
plugins {
4+
id 'java-library'
5+
id 'signing'
6+
id 'jacoco'
7+
id 'maven-publish'
8+
id 'org.jreleaser' version '1.17.0'
9+
}
10+
111
repositories {
212
mavenLocal()
313
mavenCentral()
414
}
515

6-
apply plugin: 'java-library'
7-
apply plugin: 'signing'
8-
apply plugin: 'jacoco'
9-
apply plugin: 'maven-publish'
10-
1116
group 'com.factset.sdk'
1217
version '1.1.4-SNAPSHOT'
1318

@@ -68,6 +73,8 @@ artifacts {
6873
archives sourcesJar
6974
}
7075

76+
def artifactStagingDirectory = layout.buildDirectory.dir("build/staging-deploy")
77+
7178
publishing {
7279
publications {
7380
register("mavenJava", MavenPublication) {
@@ -104,20 +111,61 @@ publishing {
104111

105112
repositories {
106113
maven {
107-
url = version.endsWith('SNAPSHOT') ? System.getenv('MAVEN_SNAPSHOTS_URL') : System.getenv('MAVEN_RELEASES_URL')
114+
url = uri(artifactStagingDirectory)
115+
}
116+
}
117+
}
108118

109-
credentials {
110-
username = System.getenv('MAVEN_USERNAME')
111-
password = System.getenv('MAVEN_PASSWORD')
112-
}
119+
jreleaser {
120+
gitRootSearch = true
121+
122+
project {
123+
description = 'FactSet SDK Utilities for Java'
124+
authors = ['FactSet']
125+
license = "APACHE-2.0"
126+
inceptionYear = "2021"
127+
vendor = "FactSet"
128+
copyright = "Copyright (c) ${LocalDate.now().year} FactSet"
129+
return // for the type checker
130+
}
113131

114-
authentication {
115-
digest(BasicAuthentication)
116-
}
132+
signing {
133+
active = 'ALWAYS'
134+
armored = true
135+
return
136+
}
137+
138+
release {
139+
github {
140+
skipTag = true
141+
skipRelease = true
142+
return
117143
}
118144
}
119-
}
120145

121-
signing {
122-
sign publishing.publications.mavenJava
146+
deploy {
147+
maven {
148+
mavenCentral {
149+
'release-deploy' {
150+
active = 'RELEASE'
151+
url = "https://central.sonatype.com/api/v1/publisher"
152+
stagingRepository artifactStagingDirectory.get().asFile.path
153+
}
154+
return
155+
}
156+
nexus2 {
157+
'snapshot-deploy' {
158+
active = 'SNAPSHOT'
159+
url = "https://central.sonatype.com/repository/maven-snapshots/"
160+
snapshotUrl = "https://central.sonatype.com/repository/maven-snapshots/"
161+
applyMavenCentralRules = true
162+
snapshotSupported = true
163+
closeRepository = true
164+
releaseRepository = true
165+
stagingRepository artifactStagingDirectory.get().asFile.path
166+
}
167+
return
168+
}
169+
}
170+
}
123171
}

0 commit comments

Comments
 (0)