{"id":14985692,"url":"https://github.com/spongepowered/configurate","last_synced_at":"2025-05-14T13:05:48.205Z","repository":{"id":25134656,"uuid":"28556746","full_name":"SpongePowered/Configurate","owner":"SpongePowered","description":"A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation","archived":false,"fork":false,"pushed_at":"2025-04-19T10:15:12.000Z","size":16152,"stargazers_count":412,"open_issues_count":40,"forks_count":73,"subscribers_count":16,"default_branch":"trunk","last_synced_at":"2025-04-19T16:08:30.588Z","etag":null,"topics":["configuration","gson","hacktoberfest","hocon","java","json","kotlin","xml","yaml"],"latest_commit_sha":null,"homepage":"https://configurate.aoeu.xyz","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SpongePowered.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"patreon":"Sponge"}},"created_at":"2014-12-28T07:48:56.000Z","updated_at":"2025-04-18T22:13:00.000Z","dependencies_parsed_at":"2023-10-02T04:44:48.213Z","dependency_job_id":"f9c600af-fe90-4dae-b658-3e7b0940c353","html_url":"https://github.com/SpongePowered/Configurate","commit_stats":{"total_commits":908,"total_committers":30,"mean_commits":"30.266666666666666","dds":"0.44603524229074887","last_synced_commit":"d841b163981c4155b8c9b9796f68dc1f80dc3455"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FConfigurate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FConfigurate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FConfigurate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpongePowered%2FConfigurate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpongePowered","download_url":"https://codeload.github.com/SpongePowered/Configurate/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149949,"owners_count":22022851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration","gson","hacktoberfest","hocon","java","json","kotlin","xml","yaml"],"created_at":"2024-09-24T14:11:29.841Z","updated_at":"2025-05-14T13:05:48.172Z","avatar_url":"https://github.com/SpongePowered.png","language":"Java","readme":"# [Configurate](https://configurate.aoeu.xyz/) \n\n![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/SpongePowered/Configurate/test-build.yml?branch=trunk)\n[![MIT License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE) \n[![Maven Central](https://img.shields.io/maven-central/v/org.spongepowered/configurate-core?label=stable\u0026color=%23f6cf17)][Maven Central]\n![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/org.spongepowered/configurate-core?label=dev\u0026server=https%3A%2F%2Foss.sonatype.org)\n\nConfigurate is a simple configuration library for Java applications that provides a node-based representation of data, able to handle a wide variety of configuration formats.\n\nWant to talk to us about Configurate? Join us in the `#configurate` channel on our [Discord](https://discord.gg/sponge) or start a thread on our (new!) [Discussions](https://github.com/SpongePowered/Configurate/discussions) page.\n\nThe current supported formats are:\n\n* [JSON](https://www.json.org/)\n* [HOCON](https://github.com/lightbend/config/blob/master/HOCON.md)\n* [YAML](http://yaml.org/)\n* [XML](https://www.w3.org/XML/)\n\n## Project Structure\nThe project is split into different modules.\n\n#### Configurate core\n`configurate-core` is the base of the library, containing the main APIs used to manipulate configurations. It is generic, and does not depend on any specific format of configuration.\n\n#### Configurate loaders\nEach distinct configuration format is implemented as a \"configuration loader\", in a separate module.\n\nA number of loader implementations are provided as standard in this project, however it is possible to implement a custom loader for a new format separately.\n\nThe current supported loaders provided by the project are:\n\n* `configurate-gson` - Implementation for the JSON format, using the [Gson](https://github.com/google/gson) library for parsing and generation\n* `configurate-hocon` - Implementation for the HOCON format, using the [lightbend config](https://github.com/lightbend/config) library for parsing and generation\n* `configurate-jackson` - Implementation for the JSON format, using the [Jackson](https://github.com/FasterXML/jackson-core) library for parsing and generation\n* `configurate-xml` - Implementation for the XML format, using the [JAXP](https://docs.oracle.com/javase/tutorial/jaxp/index.html) library for parsing and generation\n* `configurate-yaml` - Implementation for the YAML format, using the [SnakeYAML](https://bitbucket.org/asomov/snakeyaml) library for parsing and generation\n\n#### extras\n\nSome features that don't need tight integration with Configurate itself are provided as separate modules. These are:\n\n* `configurate-extra-dfu[2-4]` - Integration between Mojang's [DataFixerUpper](https://github.com/Mojang/DataFixerUpper) and Configurate's systems.\n* `configurate-extra-kotlin` - Extensions to allow Configurate types to use [Kotlin] features, and support for Kotlin data classes in the object\n mapper.\n* `configurate-extra-guice` - Allows using a [Guice](https://github.com/google/guice) `Injector` to create new object instances in the object mapper.\n\n\n## Usage\n\n* To use Configurate, your project must be configured to use Java 8 or higher.\n* Releases are on [Maven Central] and snapshot artifacts are hosted on Sonatype OSS. Builds are also included on SpongePowered's Maven Repository,\navailable at https://repo.spongepowered.org/maven/.\n\nIf your project uses Maven or Gradle, just add the following to your build scripts.\n\n#### Gradle\n\n```groovy\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    // Modify this line to target the loader you wish to use.\n    implementation 'org.spongepowered:configurate-hocon:4.2.0'\n}\n```\n\n#### Maven\n\n```xml\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003eorg.spongepowered\u003c/groupId\u003e\n        \u003c!-- Modify this line to target the loader you wish to use. --\u003e\n        \u003cartifactId\u003econfigurate-hocon\u003c/artifactId\u003e\n        \u003cversion\u003e4.2.0\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\nMore detailed usage instructions can be found in the [Configurate wiki](https://github.com/SpongePowered/Configurate/wiki).\n\n## Contributing\n\n#### Clone\nThe following steps will ensure your project is cloned properly.\n\n1. `git clone https://github.com/SpongePowered/Configurate.git --recurse-submodules`\n2. `cd Configurate`\n\n#### Building\n**Note:** If you do not have [Gradle](https://www.gradle.org/) 8.0+ installed then use ./gradlew for Unix systems or Git Bash and gradlew.bat for\n Windows systems in place of any 'gradle' command.\n\nIn order to build Configurate you simply need to run the `gradle build` command. You can find the compiled JAR files in `./build/libs`  (found in\n each subproject) labeled similarly to '\u003csubproject\u003e-x.x.x-SNAPSHOT.jar'.\n \n While the entire project can run on Java 8, the project requires Java 17 to build, and for multi-release JAR contents and some tests requires at least Java 16. Gradle will automatically download necessary JDK versions -- see [their documentation](https://docs.gradle.org/current/userguide/toolchains.html) for details on this feature, and how to point it at existing local installations.\n\n#### Pull Requests\nWe love PRs! However, when contributing, here are some things to keep in mind:\n\n- Take a look at open issues first before you get too far in -- someone might already be working on what you were planning on doing\n- In general, we follow the [Sponge style guidelines](https://docs.spongepowered.org/stable/en/contributing/implementation/codestyle.html) for code\n style -- see the [Contributing Guidelines](CONTRIBUTING.md) for details.\n- Please, please, please test PRs. It makes the process a lot easier for everybody :)\n\n\n[Kotlin]: https://kotlinlang.org\n[Maven Central]: https://search.maven.org/search?q=g:org.spongepowered%20AND%20a:configurate*\n","funding_links":["https://patreon.com/Sponge"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspongepowered%2Fconfigurate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspongepowered%2Fconfigurate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspongepowered%2Fconfigurate/lists"}