Installation

PistonConfig modules are published under the net.pistonmaster group. Runtime artifacts use the pistonconfig-<module> naming pattern.

Requirements

Requirement Value
Java 25
Group ID net.pistonmaster
Recommended version alignment pistonconfig-bom
Release repositories Maven Central and GitHub Packages

Gradle With the BOM

Use the BOM for applications that depend on more than one module.

repositories {
  mavenCentral()
}

dependencies {
  implementation(platform("net.pistonmaster:pistonconfig-bom:0.1.0-SNAPSHOT"))
  implementation("net.pistonmaster:pistonconfig-core")
  implementation("net.pistonmaster:pistonconfig-yaml")
  implementation("net.pistonmaster:pistonconfig-annotations")
}

Gradle Without the BOM

dependencies {
  implementation("net.pistonmaster:pistonconfig-core:0.1.0-SNAPSHOT")
  implementation("net.pistonmaster:pistonconfig-yaml:0.1.0-SNAPSHOT")
}

Use this form for tiny examples or when a parent build already manages dependency versions.

Maven With the BOM

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>net.pistonmaster</groupId>
      <artifactId>pistonconfig-bom</artifactId>
      <version>0.1.0-SNAPSHOT</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>net.pistonmaster</groupId>
    <artifactId>pistonconfig-core</artifactId>
  </dependency>
  <dependency>
    <groupId>net.pistonmaster</groupId>
    <artifactId>pistonconfig-yaml</artifactId>
  </dependency>
</dependencies>

GitHub Packages

GitHub Packages is configured as a release target. GitHub requires authenticated Maven access even for public packages.

repositories {
  maven {
    name = "GitHubPackages"
    url = uri("https://maven.pkg.github.com/AlexProgrammerDE/PistonConfig")
    credentials {
      username = providers.gradleProperty("githubPackagesUsername").orNull
      password = providers.gradleProperty("githubPackagesToken").orNull
    }
  }
}

In GitHub Actions, GITHUB_ACTOR and GITHUB_TOKEN are enough for repository workflows. Locally, use a token that can read packages.

Pick Modules

Start with pistonconfig-core and one format backend. Add higher-level modules only for the access style or operation you need.

Need Modules
YAML files pistonconfig-core, pistonconfig-yaml
TOML files pistonconfig-core, pistonconfig-toml
HOCON files pistonconfig-core, pistonconfig-hocon
JSON, JSONC, or JSON5 files pistonconfig-core, pistonconfig-json
.properties files pistonconfig-core, pistonconfig-properties
Annotation mapping pistonconfig-core, pistonconfig-annotations
Static typed keys pistonconfig-core, pistonconfig-static-fields
Environment overrides pistonconfig-core, pistonconfig-env
Versioned migrations pistonconfig-core, pistonconfig-migrations

Verify the Dependency Graph

./gradlew dependencies --configuration runtimeClasspath

The BOM should align every net.pistonmaster:pistonconfig-* artifact to the same version.

Search Documentation