From ca142a0b04118b397312b373f255afb92a3d3c64 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Tue, 8 Sep 2026 14:57:23 +0200 Subject: [PATCH 01/28] Add jreleaser to enable publishing (snapshots) to maven central Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 50 ++++++++++++++++++++ build.gradle | 71 ++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index d0f0f28..e80ef73 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -51,3 +51,53 @@ jobs: reuse-compliance: name: REUSE Compliance uses: ./.github/workflows/reuse-compliance.yml + + push-and-deploy: + name: Push Deployment Updates + needs: [build-and-test] + if: always() && github.ref_type == 'tag' + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 7.0.1 + with: + fetch-depth: 1 + persist-credentials: false + + - name: Setup runtime + uses: ./.github/actions/setup-runtime + + - name: Cache Gradle + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 #v6.1.0 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/settings.gradle*') }} + + - name: Optimize Gradle + shell: bash + run: | + mkdir -p ~/.gradle + echo "org.gradle.caching=true" >> ~/.gradle/gradle.properties + echo "org.gradle.configuration-cache=true" >> ~/.gradle/gradle.properties + + - name: Gradle Release Build + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + SANITIZED_TAG: ${{ github.ref_name }} + JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_USERNAME }} + JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_USERNAME }} + JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + run: | + echo "Performing release Gradle publish for tag: $SANITIZED_TAG" + + ./gradlew clean build \ + jreleaserDeploy --dryrun -jreleaser.project.version=$SANITIZED_TAG \ No newline at end of file diff --git a/build.gradle b/build.gradle index d157c7e..4980663 100644 --- a/build.gradle +++ b/build.gradle @@ -2,11 +2,15 @@ // // SPDX-License-Identifier: MPL-2.0 + +import org.jreleaser.model.Active + import javax.inject.Inject plugins { id 'java' id 'maven-publish' + id 'org.jreleaser' version '1.26.0' } interface InjectedExecOps { @@ -268,6 +272,20 @@ sourceSets { } } +tasks.register('sourcesJar', Jar) { + dependsOn(tasks.named('generatePGMBindings')) + from sourceSets.main.java + archiveClassifier.set('sources') +} + +artifacts { + archives sourcesJar +} + +java { + withJavadocJar() +} + tasks.named('compileJava') { dependsOn(tasks.named('generatePGMBindings')) } @@ -280,7 +298,60 @@ publishing { publications { mavenJava(MavenPublication) { from components.java + groupId = 'org.lfenergy.pgm' artifactId = 'lib-power-grid-model' + + pom { + name = 'lib-power-grid-model' + description = '' + url = 'https://github.com/PowerGridModel/libpower-grid-model-java' + organization { + name = 'LF Energy' + url = 'https://lfenergy.org' + } + licenses { + license { + name = 'Mozilla Public License, Version 2.0"' + url = 'https://www.mozilla.org/en-US/MPL/2.0/' + } + } + developers { + developer { + email = 'powergridmodel@lfenergy.org' + } + } + scm { + url = 'https://github.com/PowerGridModel/libpower-grid-model-java' + connection = 'scm:git:git://github.com/PowerGridModel/libpower-grid-model-java.git' + developerConnection = 'scm:git:ssh://git@github.com/PowerGridModel/libpower-grid-model-java.git' + } + } + + } + } +} + +jreleaser { + signing { + active = 'ALWAYS' + armored = true + } + deploy { + maven { +// mavenCentral { +// 'release-deploy' { +// active = 'RELEASE' +// url = 'https://central.sonatype.com/api/v1/publisher' +// } +// } + nexus2 { + 'snapshot-deploy' { + active = 'SNAPSHOT' + snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/' + applyMavenCentralRules = true + snapshotSupported = true + } + } } } } From f4cc49985c4d2593332b279cfe1e8c086b2cc593 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:06:25 +0200 Subject: [PATCH 02/28] Change workflow to test snapshot dryrun Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index e80ef73..4c6a23b 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -55,7 +55,7 @@ jobs: push-and-deploy: name: Push Deployment Updates needs: [build-and-test] - if: always() && github.ref_type == 'tag' +# if: always() && github.ref_type == 'tag' runs-on: ubuntu-latest permissions: id-token: write @@ -100,4 +100,4 @@ jobs: echo "Performing release Gradle publish for tag: $SANITIZED_TAG" ./gradlew clean build \ - jreleaserDeploy --dryrun -jreleaser.project.version=$SANITIZED_TAG \ No newline at end of file + jreleaserDeploy --dryrun -jreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file From 3bab15984561a9a7da00946331eff54908bac142 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:10:40 +0200 Subject: [PATCH 03/28] add -P to deploy command Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 4c6a23b..b5a1a28 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -52,8 +52,8 @@ jobs: name: REUSE Compliance uses: ./.github/workflows/reuse-compliance.yml - push-and-deploy: - name: Push Deployment Updates + publish: + name: Publish to maven central needs: [build-and-test] # if: always() && github.ref_type == 'tag' runs-on: ubuntu-latest @@ -100,4 +100,4 @@ jobs: echo "Performing release Gradle publish for tag: $SANITIZED_TAG" ./gradlew clean build \ - jreleaserDeploy --dryrun -jreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file + jreleaserDeploy --dryrun -Pjreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file From 3b53a47f07c7c902e592c96234c812f0f1e39bcf Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:17:37 +0200 Subject: [PATCH 04/28] change -Pjreleaser.project.version to -Pversion Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index b5a1a28..42baf53 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -100,4 +100,4 @@ jobs: echo "Performing release Gradle publish for tag: $SANITIZED_TAG" ./gradlew clean build \ - jreleaserDeploy --dryrun -Pjreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file + jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file From 45d9c31851695189199954230bb770eb8f0e6f7f Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:24:14 +0200 Subject: [PATCH 05/28] Use temp credentials and publish to other groupid Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 42baf53..bf01a55 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -94,8 +94,8 @@ jobs: SANITIZED_TAG: ${{ github.ref_name }} JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_USERNAME }} JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_USERNAME }} - JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + JRELEASER_NEXUS2_USERNAME: ${{ secrets.TEMP_MAVEN_USER }} + JRELEASER_NEXUS2_PASSWORD: ${{ secrets.TEMP_MAVEN_PASSWORD }} run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" diff --git a/build.gradle b/build.gradle index 4980663..4d346c9 100644 --- a/build.gradle +++ b/build.gradle @@ -298,7 +298,7 @@ publishing { publications { mavenJava(MavenPublication) { from components.java - groupId = 'org.lfenergy.pgm' + groupId = 'io.github.wei-qiang' artifactId = 'lib-power-grid-model' pom { From 1ac3ed0bac62f2776c460d0e22208b134f676c73 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:39:35 +0200 Subject: [PATCH 06/28] Add stagingRepository Signed-off-by: Wei-Qiang Zhou --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 4d346c9..ab7cd5e 100644 --- a/build.gradle +++ b/build.gradle @@ -350,6 +350,7 @@ jreleaser { snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/' applyMavenCentralRules = true snapshotSupported = true + stagingRepository('build/libs') } } } From a7fdcab87a56349bd92790d40b05a18c6038e89f Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:52:57 +0200 Subject: [PATCH 07/28] Add staging-deploy repository Signed-off-by: Wei-Qiang Zhou --- build.gradle | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ab7cd5e..a002f8c 100644 --- a/build.gradle +++ b/build.gradle @@ -295,6 +295,11 @@ tasks.named('processResources') { } publishing { + repositories { + maven { + url = layout.buildDirectory.dir("staging-deploy") + } + } publications { mavenJava(MavenPublication) { from components.java @@ -350,7 +355,7 @@ jreleaser { snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/' applyMavenCentralRules = true snapshotSupported = true - stagingRepository('build/libs') + stagingRepository('target/staging-deploy') } } } From 54087f01d7333251d3f6575adb536dc8f180fc0b Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 08:56:18 +0200 Subject: [PATCH 08/28] change target to build Signed-off-by: Wei-Qiang Zhou --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a002f8c..8be06a7 100644 --- a/build.gradle +++ b/build.gradle @@ -355,7 +355,7 @@ jreleaser { snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/' applyMavenCentralRules = true snapshotSupported = true - stagingRepository('target/staging-deploy') + stagingRepository('build/staging-deploy') } } } From 2f2bfa7820118a0459c1d98ffd098926e69d5fac Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 09:00:49 +0200 Subject: [PATCH 09/28] Add publish command Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index bf01a55..1323c94 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,5 +99,5 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build \ + ./gradlew clean build publish \ jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file From 3d5d30697567d92bb51b85c10c499f472578c063 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:17:41 +0200 Subject: [PATCH 10/28] turn on debug logging Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 1323c94..c825d11 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -100,4 +100,4 @@ jobs: echo "Performing release Gradle publish for tag: $SANITIZED_TAG" ./gradlew clean build publish \ - jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file + jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT --debug \ No newline at end of file From d9ce5fd017e4c9eea71a3f7b34e7aee88de12218 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:21:49 +0200 Subject: [PATCH 11/28] split up commands Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index c825d11..acef0e4 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,5 +99,6 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish \ - jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT --debug \ No newline at end of file + ./gradlew clean build publish + find build/staging-deploy -type f + ./gradlew jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file From 95a19524cb7d943df74cccc1e9a1c8ddaeb7ef35 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:24:28 +0200 Subject: [PATCH 12/28] add -Pversion Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index acef0e4..c61649a 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,6 +99,6 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish + ./gradlew clean build publish -Pversion=0.1-SNAPSHOT find build/staging-deploy -type f ./gradlew jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file From 0f49ffdf44860aaf8aacee901da19b44aebe5d1b Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:28:26 +0200 Subject: [PATCH 13/28] add -Pproject.version Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index c61649a..fc56438 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -101,4 +101,4 @@ jobs: ./gradlew clean build publish -Pversion=0.1-SNAPSHOT find build/staging-deploy -type f - ./gradlew jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file + ./gradlew jreleaserDeploy --dryrun -Pproject.version=0.1-SNAPSHOT \ No newline at end of file From a9725917c32f36458a3081d868db9bcc56971b92 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:30:42 +0200 Subject: [PATCH 14/28] add -Pproject.version Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index fc56438..396560b 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,6 +99,6 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish -Pversion=0.1-SNAPSHOT + ./gradlew clean build publish -Pproject.version=0.1-SNAPSHOT find build/staging-deploy -type f ./gradlew jreleaserDeploy --dryrun -Pproject.version=0.1-SNAPSHOT \ No newline at end of file From 593ec84896ae96f6b6f224f5dd9c4e9d43575b13 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:33:33 +0200 Subject: [PATCH 15/28] add -Pjreleaser.project.version Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 396560b..f3dc6c4 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,6 +99,6 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish -Pproject.version=0.1-SNAPSHOT + ./gradlew clean build publish -Pjreleaser.project.version=0.1-SNAPSHOT find build/staging-deploy -type f - ./gradlew jreleaserDeploy --dryrun -Pproject.version=0.1-SNAPSHOT \ No newline at end of file + ./gradlew jreleaserDeploy --dryrun -Pjreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file From a438297d5f85ec89f7752381ecadddc121eed69d Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:37:48 +0200 Subject: [PATCH 16/28] remove version in build.gradle Signed-off-by: Wei-Qiang Zhou --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8be06a7..003f6b6 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,6 @@ interface InjectedExecOps { } group = 'org-power-grid-model' -version = '1.0-SNAPSHOT' repositories { mavenCentral() From a6abfd03cbab1aa1487ee38f6477cc5e79ef0b46 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:40:29 +0200 Subject: [PATCH 17/28] set -Pversion Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index f3dc6c4..c61649a 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -99,6 +99,6 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish -Pjreleaser.project.version=0.1-SNAPSHOT + ./gradlew clean build publish -Pversion=0.1-SNAPSHOT find build/staging-deploy -type f - ./gradlew jreleaserDeploy --dryrun -Pjreleaser.project.version=0.1-SNAPSHOT \ No newline at end of file + ./gradlew jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file From 8a294262215d9d5d45f346597030919a2afbd000 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:45:04 +0200 Subject: [PATCH 18/28] Add sourcesJar Signed-off-by: Wei-Qiang Zhou --- build.gradle | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 003f6b6..244f7ba 100644 --- a/build.gradle +++ b/build.gradle @@ -271,17 +271,8 @@ sourceSets { } } -tasks.register('sourcesJar', Jar) { - dependsOn(tasks.named('generatePGMBindings')) - from sourceSets.main.java - archiveClassifier.set('sources') -} - -artifacts { - archives sourcesJar -} - java { + withSourcesJar() withJavadocJar() } From 126ae12fca2abe6b7b9c5451b201f31bcea96b0d Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:46:51 +0200 Subject: [PATCH 19/28] Revert removal of sourcesJar task Signed-off-by: Wei-Qiang Zhou --- build.gradle | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/build.gradle b/build.gradle index 244f7ba..23489e1 100644 --- a/build.gradle +++ b/build.gradle @@ -271,6 +271,16 @@ sourceSets { } } +tasks.register('sourcesJar', Jar) { + dependsOn(tasks.named('generatePGMBindings')) + from sourceSets.main.java + archiveClassifier.set('sources') +} + +artifacts { + archives sourcesJar +} + java { withSourcesJar() withJavadocJar() From e225d32e0dc762825c4204fe00e56f1c8a34e100 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:49:45 +0200 Subject: [PATCH 20/28] Fill pom description Signed-off-by: Wei-Qiang Zhou --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 23489e1..1a2fe96 100644 --- a/build.gradle +++ b/build.gradle @@ -308,7 +308,7 @@ publishing { pom { name = 'lib-power-grid-model' - description = '' + description = 'Java package which wraps PGM core shared library' url = 'https://github.com/PowerGridModel/libpower-grid-model-java' organization { name = 'LF Energy' From d70cc549054d0348c8220bb492bc3de0a869ad5f Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 11:58:19 +0200 Subject: [PATCH 21/28] Add more developer details Signed-off-by: Wei-Qiang Zhou --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 1a2fe96..ecc9a5a 100644 --- a/build.gradle +++ b/build.gradle @@ -322,7 +322,10 @@ publishing { } developers { developer { + id = 'contributors' + name = 'Power Grid Model Contributors' email = 'powergridmodel@lfenergy.org' + url = 'https://github.com/PowerGridModel/libpower-grid-model-java' } } scm { From b58b6bae0e045a542686bc9630d44a7c7c5333d3 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 13:07:25 +0200 Subject: [PATCH 22/28] remove dryrun tag Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index c61649a..5292447 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -100,5 +100,4 @@ jobs: echo "Performing release Gradle publish for tag: $SANITIZED_TAG" ./gradlew clean build publish -Pversion=0.1-SNAPSHOT - find build/staging-deploy -type f - ./gradlew jreleaserDeploy --dryrun -Pversion=0.1-SNAPSHOT \ No newline at end of file + ./gradlew jreleaserDeploy -Pversion=0.1-SNAPSHOT \ No newline at end of file From 321cf900270982887611700c55e7fb2574932dc0 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 16:00:21 +0200 Subject: [PATCH 23/28] Change jreleaser to publish to org.lfenergy.powergridmodel Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 6 +++--- build.gradle | 21 +++++++++------------ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 5292447..c08b7f4 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -55,7 +55,7 @@ jobs: publish: name: Publish to maven central needs: [build-and-test] -# if: always() && github.ref_type == 'tag' + if: always() && github.ref_type == 'tag' runs-on: ubuntu-latest permissions: id-token: write @@ -99,5 +99,5 @@ jobs: run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" - ./gradlew clean build publish -Pversion=0.1-SNAPSHOT - ./gradlew jreleaserDeploy -Pversion=0.1-SNAPSHOT \ No newline at end of file + ./gradlew clean build publish -Pversion=$SANITIZED_TAG + ./gradlew jreleaserDeploy -Pversion=$SANITIZED_TAG \ No newline at end of file diff --git a/build.gradle b/build.gradle index ecc9a5a..322fb87 100644 --- a/build.gradle +++ b/build.gradle @@ -2,9 +2,6 @@ // // SPDX-License-Identifier: MPL-2.0 - -import org.jreleaser.model.Active - import javax.inject.Inject plugins { @@ -303,11 +300,11 @@ publishing { publications { mavenJava(MavenPublication) { from components.java - groupId = 'io.github.wei-qiang' - artifactId = 'lib-power-grid-model' + groupId = 'org.lfenergy.powergridmodel' + artifactId = 'power-grid-model-ffm' pom { - name = 'lib-power-grid-model' + name = 'power-grid-model-ffm' description = 'Java package which wraps PGM core shared library' url = 'https://github.com/PowerGridModel/libpower-grid-model-java' organization { @@ -346,12 +343,12 @@ jreleaser { } deploy { maven { -// mavenCentral { -// 'release-deploy' { -// active = 'RELEASE' -// url = 'https://central.sonatype.com/api/v1/publisher' -// } -// } + mavenCentral { + 'release-deploy' { + active = 'RELEASE' + url = 'https://central.sonatype.com/api/v1/publisher' + } + } nexus2 { 'snapshot-deploy' { active = 'SNAPSHOT' From 9a56b3c95cb48de9fdb093c31133709f99b799e2 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 16:01:55 +0200 Subject: [PATCH 24/28] Use correct secrets Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index c08b7f4..d7585e0 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -94,8 +94,8 @@ jobs: SANITIZED_TAG: ${{ github.ref_name }} JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_USERNAME }} JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - JRELEASER_NEXUS2_USERNAME: ${{ secrets.TEMP_MAVEN_USER }} - JRELEASER_NEXUS2_PASSWORD: ${{ secrets.TEMP_MAVEN_PASSWORD }} + JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_USERNAME }} + JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" From b807c9daffb4630fe4d0f5abda6b6a93982e6a2d Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Wed, 9 Sep 2026 16:02:42 +0200 Subject: [PATCH 25/28] Add stagingrepository to release deployment Signed-off-by: Wei-Qiang Zhou --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 322fb87..62b953f 100644 --- a/build.gradle +++ b/build.gradle @@ -347,6 +347,7 @@ jreleaser { 'release-deploy' { active = 'RELEASE' url = 'https://central.sonatype.com/api/v1/publisher' + stagingRepository('build/staging-deploy') } } nexus2 { From a86c06ad71c333501276f890558cb881ed740d45 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Thu, 10 Sep 2026 10:41:44 +0200 Subject: [PATCH 26/28] Only publish when its a release Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index d7585e0..175432e 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -55,7 +55,7 @@ jobs: publish: name: Publish to maven central needs: [build-and-test] - if: always() && github.ref_type == 'tag' + if: github.event_name == 'release' && github.ref_type == 'tag' runs-on: ubuntu-latest permissions: id-token: write From 85d1145d3b8ba12249ddc6e436ae7b38c511625d Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Thu, 10 Sep 2026 13:56:40 +0200 Subject: [PATCH 27/28] Remove snapshot, add release environment and create_release input for the workflow Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 13 +++++++++---- build.gradle | 9 --------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index 175432e..bee5a27 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -7,6 +7,12 @@ name: Java CI with Gradle for library on: push: workflow_dispatch: + inputs: + create_release: + type: boolean + description: Create a release when CI passes + default: false + required: true concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -55,8 +61,9 @@ jobs: publish: name: Publish to maven central needs: [build-and-test] - if: github.event_name == 'release' && github.ref_type == 'tag' + if: github.event_name == 'workflow_dispatch' && inputs.create_release && github.ref_type == 'tag' runs-on: ubuntu-latest + environment: release permissions: id-token: write contents: read @@ -91,11 +98,9 @@ jobs: JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - SANITIZED_TAG: ${{ github.ref_name }} JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVEN_USERNAME }} JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - JRELEASER_NEXUS2_USERNAME: ${{ secrets.MAVEN_USERNAME }} - JRELEASER_NEXUS2_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + SANITIZED_TAG: ${{ github.ref_name }} run: | echo "Performing release Gradle publish for tag: $SANITIZED_TAG" diff --git a/build.gradle b/build.gradle index 62b953f..2544a44 100644 --- a/build.gradle +++ b/build.gradle @@ -350,15 +350,6 @@ jreleaser { stagingRepository('build/staging-deploy') } } - nexus2 { - 'snapshot-deploy' { - active = 'SNAPSHOT' - snapshotUrl = 'https://central.sonatype.com/repository/maven-snapshots/' - applyMavenCentralRules = true - snapshotSupported = true - stagingRepository('build/staging-deploy') - } - } } } } From ad72f517929c2e2a6732fa6f64a5d194f564fd56 Mon Sep 17 00:00:00 2001 From: Wei-Qiang Zhou Date: Fri, 11 Sep 2026 12:01:38 +0200 Subject: [PATCH 28/28] Remove publishing when workflow is triggered manually as it wont create a release Signed-off-by: Wei-Qiang Zhou --- .github/workflows/java-gradle-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-gradle-ci.yml b/.github/workflows/java-gradle-ci.yml index bee5a27..ce8c25d 100644 --- a/.github/workflows/java-gradle-ci.yml +++ b/.github/workflows/java-gradle-ci.yml @@ -61,7 +61,7 @@ jobs: publish: name: Publish to maven central needs: [build-and-test] - if: github.event_name == 'workflow_dispatch' && inputs.create_release && github.ref_type == 'tag' + if: github.ref_type == 'tag' runs-on: ubuntu-latest environment: release permissions: