https://github.com/CarmJos/configured
:memo: Easy (to make) Configurations! A simple, easy-to-use and universal solution for managing configuration files. Enjoy the ease of use with customizable formats for loading, reading, and updating your configuration files.
https://github.com/CarmJos/configured
configuration configuration-files configuration-management development easy-to-use fastdev hocon json library sql yaml
Last synced: 5 months ago
JSON representation
:memo: Easy (to make) Configurations! A simple, easy-to-use and universal solution for managing configuration files. Enjoy the ease of use with customizable formats for loading, reading, and updating your configuration files.
- Host: GitHub
- URL: https://github.com/CarmJos/configured
- Owner: CarmJos
- License: lgpl-3.0
- Created: 2022-04-16T16:17:57.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-14T14:50:40.000Z (about 1 year ago)
- Last Synced: 2024-09-15T00:35:17.431Z (about 1 year ago)
- Topics: configuration, configuration-files, configuration-management, development, easy-to-use, fastdev, hocon, json, library, sql, yaml
- Language: Java
- Homepage: https://carmjos.github.io/EasyConfiguration/
- Size: 825 KB
- Stars: 30
- Watchers: 1
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
![]()
[](https://github.com/CarmJos/configured/releases)
[](https://www.gnu.org/licenses/lgpl-3.0.html)
[](https://github.com/CarmJos/configured/actions/workflows/maven.yml)
[](https://www.codefactor.io/repository/github/carmjos/configured)

README LANGUAGES [ [**English**](README.md) | [中文](README_CN.md) ]
# configured _(config framework)_
_**"Once set, Simple get."**_
A simple, easy-to-use and universal solution for managing, loading, reading,
and updating configuration files.Supported **JSON**, **YAML**, **Hocon**, **TOML**, **SQL**, **MongoDB**... and much more!
## Features & Advantages
Supported [YAML](impl/yaml), [JSON](impl/json), [HOCON](impl/hocon) and [SQL](impl/sql) based configuration files
format.- Class-based mechanism for initializing, loading, retrieving, and updating configuration files, ensuring convenience
and efficiency.
- Supports manual serialization and deserialization of complex configurations.
- Offers multiple builder forms for rapid construction of `ConfigValue>` objects.
- Enables specification of configuration paths, comments, and more via annotations.## Development
For the latest JavaDoc release, [CLICK HERE](https://CarmJos.github.io/configured).
For a detailed development guide, [CLICK HERE](.doc/README.md).
### Preview
To quickly demonstrate the applicability of the project, here are a few practical demonstrations:
- [Database configuration.](demo/src/main/java/cc/carm/lib/configuration/demo/DatabaseConfiguration.java)
- [Demonstration of all types of configuration instance classes.](demo/src/main/java/cc/carm/lib/configuration/demo/tests/conf/DemoConfiguration.java)Check out all code demonstrations [HERE](demo/src/main/java/cc/carm/lib/configuration/demo/DatabaseConfiguration.java).
For more examples, see the [Development Guide](.doc/README.md).```java
@ConfigPath(root = true)
@HeaderComments("Configurations for sample")
public interface SampleConfig extends Configuration {@InlineComment("Enabled?") // Inline comment
ConfiguredValue ENABLED = ConfiguredValue.of(true);@HeaderComments("Server configurations") // Header comment
ConfiguredValue PORT = ConfiguredValue.of(Integer.class);@HeaderComments({"[ UUID >-----------------------------------", "A lot of UUIDs"})
@FooterComments("[ UUID >-----------------------------------")
ConfiguredList UUIDS = ConfiguredList.builderOf(UUID.class).fromString()
.parse(UUID::fromString).serialize(UUID::toString)
.defaults(
UUID.fromString("00000000-0000-0000-0000-000000000000"),
UUID.fromString("00000000-0000-0000-0000-000000000001")
).build();@ConfigPath("info") // Custom path
interface INFO extends Configuration {@HeaderComments("Configure your name!") // Header comment
ConfiguredValue NAME = ConfiguredValue.of("Joker");@ConfigPath("how-old-are-you") // Custom path
ConfiguredValue AGE = ConfiguredValue.of(24);}
}
```
```java
public class Sample {
public static void main(String[] args) {
// 1. Make a configuration provider from a file.
ConfigurationHolder> holder = YAMLConfigFactory.from("target/config.yml")
.resourcePath("configs/sample.yml")
.indent(4) // Optional: Set the indentation of the configuration file.
.build();// 2. Initialize the configuration classes or instances.
holder.initialize(SampleConfig.class);
// 3. Enjoy using the configuration!
System.out.println("Enabled? -> " + SampleConfig.ENABLED.resolve()); // true
SampleConfig.ENABLED.set(false);
System.out.println("And now? -> " + SampleConfig.ENABLED.resolve()); // false
// p.s. Changes not save so enable value will still be true in the next run.System.out.println("Your name is " + SampleConfig.INFO.NAME.resolve() + " (age=" + SampleConfig.INFO.AGE.resolve() + ")!");
}
}```
```yaml
# Configurations for sampleenabled: true #Enabled?
# Server configurations
port:# [ UUID >-----------------------------------
# A lot of UUIDs
uuids:
- 00000000-0000-0000-0000-000000000000
- 00000000-0000-0000-0000-000000000001
# [ UUID >-----------------------------------info:
# Configure your name!
name: Joker
how-old-are-you: 24
```### Dependencies
#### Maven Dependency
Remote Repository Configuration
```xml
maven
Maven Central
https://repo1.maven.org/maven2
configured
GitHub Packages
https://maven.pkg.github.com/CarmJos/configured
```
Generic Native Dependency
```xml
cc.carm.lib
configured-core
[LATEST RELEASE]
compile
cc.carm.lib
configured-yaml
[LATEST RELEASE]
compile
cc.carm.lib
configured-gson
[LATEST RELEASE]
compile
```
#### Gradle Dependency
Remote Repository Configuration
```groovy
repositories {// Using Maven Central Repository for secure and stable updates, though synchronization might be needed.
mavenCentral()// Using GitHub dependencies for real-time updates, configuration required (recommended).
maven { url 'https://maven.pkg.github.com/CarmJos/configured' }}
```Generic Native Dependency
```groovy
dependencies {
// Basic implementation part, requiring custom implementation of “Provider” and “Wrapper”.
api "cc.carm.lib:configured-core:[LATEST RELEASE]"// YAML file-based implementation, compatible with all Java environments.
api "cc.carm.lib:configured-yaml:[LATEST RELEASE]"// JSON file-based implementation, compatible with all Java environments.
api "cc.carm.lib:configured-gson:[LATEST RELEASE]"}
```## Derived Projects
### [**MineConfiguration**](https://github.com/CarmJos/MineConfiguration) (by @CarmJos)
configured for MineCraft!
Easily manage configurations on MineCraft-related server platforms.Currently, it supports BungeeCord, Velocity, Bukkit (Spigot) servers,
with more platforms to be supported soon.## Support and Donation
If you appreciate this plugin, consider supporting me with a donation!
Thank you for supporting open-source projects!
Many thanks to Jetbrains for kindly providing a license for us to work on this and other open-source projects.
[](https://www.jetbrains.com/?from=https://github.com/CarmJos/configured)
Many thanks to [ArtformGames](https://github.com/ArtformGames) for their
strong support and active contribution to this project!
## Open Source License
This project's source code is licensed under
the [GNU LESSER GENERAL PUBLIC LICENSE](https://www.gnu.org/licenses/lgpl-3.0.html).