A Gradle Version Catalog and Platform (BOM) providing a coherent, tested set of versions for the Sava Solana Java libraries, the GLAM SDK, and the third-party dependencies they build on — Jetty 12, gRPC & Protobuf, BouncyCastle, PostgreSQL & HikariCP, SLF4J, and JUnit.
Both views are published under a single set of coordinates:
software.sava:solana-version-catalog
The snippets below use 25.22.11 as a placeholder — check the Maven Central badge above or
the releases page for the latest version.
Signed releases are published to Maven Central and GitHub Packages. Note:
- The newest releases may appear on GitHub Packages before Maven Central.
software.sava:anchor-programsis currently only published to GitHub Packages.
Maven Central needs no configuration. To also resolve from GitHub
Packages, generate a classic token with the read:packages scope and add it
to $HOME/.gradle/gradle.properties:
savaGithubPackagesUsername=GITHUB_USERNAME
savaGithubPackagesPassword=GITHUB_TOKENThe repository definition shown below picks these up automatically via
its name, savaGithubPackages. The sava-software/* URL serves packages from
every sava-software repository.
dependencyResolutionManagement {
repositories {
mavenCentral()
// Only needed for artifacts or versions not yet on Maven Central:
maven {
name = "savaGithubPackages"
url = uri("https://maven.pkg.github.com/sava-software/*")
credentials(PasswordCredentials::class)
}
}
versionCatalogs {
create("savaLibs") {
from("software.sava:solana-version-catalog:25.22.11")
}
}
}dependencies {
implementation(savaLibs.sava.core)
implementation(savaLibs.sava.rpc)
implementation(savaLibs.bundles.glam)
testImplementation(savaLibs.junit.jupiter)
}| Bundle | Contents |
|---|---|
savaLibs.bundles.sava.solana.programs |
Core Solana stack: sava-core, sava-rpc, idl-clients-bundle, idl-clients-spl, json-iterator, BouncyCastle |
savaLibs.bundles.glam |
GLAM sdk, services and ix-proxy |
savaLibs.bundles.jetty |
Jetty 12 server with HTTP/2 & HTTP/3, ALPN and gzip compression |
savaLibs.bundles.grpc.protobuf |
grpc-netty-shaded, grpc-protobuf, grpc-stub, protobuf-java, protoc-gen-grpc-java |
The catalog also carries the protobuf Gradle plugin and the tool versions aligned with the library entries:
plugins {
alias(savaLibs.plugins.google.protobuf.plugin)
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:${savaLibs.versions.protoc.get()}"
}
plugins {
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:${savaLibs.versions.grpc.get()}"
}
}
}The same coordinates can be used as a platform for version-less dependency declarations:
dependencies {
implementation(platform("software.sava:solana-version-catalog:25.22.11"))
implementation("software.sava:sava-core")
implementation("software.sava:sava-rpc")
}Or imported from Maven:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.sava</groupId>
<artifactId>solana-version-catalog</artifactId>
<version>25.22.11</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>To force every dependency the BOM manages to resolve to exactly the BOM's version across your whole build, use the GradleX JVM Dependency Conflict Resolution plugin:
plugins {
id("org.gradlex.jvm-dependency-conflict-resolution") version "2.5"
}
jvmDependencyConflicts {
consistentResolution {
platform("software.sava:solana-version-catalog:25.22.11")
}
}