Skip to content

Installation

Petrus Pradella edited this page Aug 12, 2026 · 7 revisions

Installation

EveryConfig is published as thin java-library jars to https://maven.petrus.dev/public. Jackson is a normal transitive dependency (not relocated).

Two artifacts, group br.com.finalcraft.everyconfig, released in lockstep:

Artifact What it is
everyconfig-core the whole library — tree, codecs, comment overlay, typed binding, and the rule seam with no rule in it
everyconfig-rules optional — the rule vocabulary: jakarta's constraints read natively, plus @Explicit/@OneOf/@Unique. See Semantic Rules

Gradle

repositories {
    maven { url 'https://maven.petrus.dev/public' }
    mavenCentral()
}

dependencies {
    implementation 'br.com.finalcraft.everyconfig:everyconfig-core:1.2.0'
    implementation 'br.com.finalcraft.everyconfig:everyconfig-rules:1.2.0'   // optional
}

Maven

<repository>
  <id>petrus-public</id>
  <url>https://maven.petrus.dev/public</url>
</repository>

<dependency>
  <groupId>br.com.finalcraft.everyconfig</groupId>
  <artifactId>everyconfig-core</artifactId>
  <version>1.2.0</version>
</dependency>

<!-- optional -->
<dependency>
  <groupId>br.com.finalcraft.everyconfig</groupId>
  <artifactId>everyconfig-rules</artifactId>
  <version>1.2.0</version>
</dependency>

Upgrading from 1.0.1

The old coordinate br.com.finalcraft:EveryConfig no longer exists. Because the coordinate CHANGED, dependency resolution will NOT deduplicate it: a build that still pulls it transitively ends up with duplicated classes on the classpath. Remove or exclude it everywhere.

What you get transitively

Dependency Why Scope
jackson-databind the serialization engine (the ObjectNode tree, the mapper) compile (api)
jackson-dataformat-yaml / -toml YAML and TOML leaf-value (de)serialization compile (api)
jackson-datatype-jsr310 java.time (Instant, LocalDate, Duration, …) runtime
jackson-datatype-jdk8 Optional / OptionalInt runtime
jakarta.validation-api the rule vocabulary (everyconfig-rules only) — annotations, never a Bean Validation provider compile (api)

Jackson types appear on EveryConfig's public surface (Config.getRoot() returns an ObjectNode), so databind/dataformat are api.

Shading on Bukkit/Spigot

A plugin that bundles EveryConfig should run its own shadowJar and relocate com.fasterxml.jackson and org.yaml.snakeyaml in its shade step:

shadowJar {
    relocate 'com.fasterxml.jackson', 'my.plugin.libs.jackson'
    relocate 'org.yaml.snakeyaml',    'my.plugin.libs.snakeyaml'
}

Relocation policy belongs at the leaf artifact (your plugin) — the only place that knows the server's classpath. EveryConfig ships thin on purpose and never relocates for you.

Runtime requirement

EveryConfig runs on Java 8+ (bytecode targets Java 8). See Building & Testing for the build toolchain.

→ Next: Quick Start

Clone this wiki locally