JavaSake is published to Maven Central (via the Sonatype Central Portal) so downstream projects can depend on it directly:
dependencies {
implementation("org.openminimed:javasake:<version>")
}Publishing is automated: pushing a vX.Y.Z tag builds, signs, and publishes the release, then
creates a GitHub Release (.github/workflows/release.yml). Local builds and PRs always use a
-SNAPSHOT version and never publish.
Publishing requires four repository secrets. None are needed to build or test; they are read only by
the release workflow.
The published coordinate uses the org.openminimed group, so the Central Portal namespace
org.openminimed must be verified once. Two options:
org.openminimed(current group) — requires verifying ownership of theopenminimed.orgdomain via a DNS TXT record in the Central Portal. Preferred if the org owns that domain.io.github.openminimed— verified automatically against the GitHub org, no domain needed. If you prefer this, changegroupinlib/build.gradle.ktsaccordingly before the first release.
In the Central Portal (https://central.sonatype.com) → Account → Generate User Token. Store the two halves as:
MAVEN_CENTRAL_USERNAMEMAVEN_CENTRAL_PASSWORD
Central requires signed artifacts. Generate a key, publish its public half to a keyserver, then export the private key in-memory (ASCII-armored):
gpg --armor --export-secret-keys <KEY_ID>Store as:
SIGNING_KEY— the full ASCII-armored private key blockSIGNING_KEY_PASSWORD— its passphrase
Add all four under Settings → Secrets and variables → Actions.
-
Decide the version (SemVer, e.g.
0.2.0). -
Tag and push:
git tag v0.2.0 git push origin v0.2.0
-
The
releaseworkflow publishes to Central (auto-released once validation passes) and opens a GitHub Release. The artifact typically appears on Central within ~15-30 minutes.
Do not set the version in lib/build.gradle.kts; it is derived from the tag
(-PreleaseVersion), so the tag is the single source of truth.