1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2024-09-19 20:25:51 +00:00
EasyConfiguration/README.md

207 lines
7.3 KiB
Markdown
Raw Normal View History

```text
____ _____ ____ __ _
/ __/__ ____ __ __ / ___/__ ___ / _(_)__ ___ _________ _/ /_(_)__ ___
/ _// _ `(_-</ // / / /__/ _ \/ _ \/ _/ / _ `/ // / __/ _ `/ __/ / _ \/ _ \
/___/\_,_/___/\_, / \___/\___/_//_/_//_/\_, /\_,_/_/ \_,_/\__/_/\___/_//_/
/___/ /___/
```
README LANGUAGES [ [**English**](README.md) | [中文](README_CN.md) ]
2022-04-16 16:32:33 +00:00
# EasyConfiguration
[![version](https://img.shields.io/github/v/release/CarmJos/EasyConfiguration)](https://github.com/CarmJos/EasyConfiguration/releases)
2022-04-22 09:54:59 +00:00
[![License](https://img.shields.io/github/license/CarmJos/EasyConfiguration)](https://www.gnu.org/licenses/lgpl-3.0.html)
2022-04-16 16:32:33 +00:00
[![workflow](https://github.com/CarmJos/EasyConfiguration/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/EasyConfiguration/actions/workflows/maven.yml)
2022-04-17 10:16:16 +00:00
[![CodeFactor](https://www.codefactor.io/repository/github/carmjos/easyconfiguration/badge)](https://www.codefactor.io/repository/github/carmjos/easyconfiguration)
2022-04-16 16:32:33 +00:00
![CodeSize](https://img.shields.io/github/languages/code-size/CarmJos/EasyConfiguration)
![](https://visitor-badge.glitch.me/badge?page_id=EasyConfiguration.readme)
**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.
2022-04-16 16:32:33 +00:00
## Features & Advantages
2022-04-16 16:32:33 +00:00
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.
2022-04-16 16:32:33 +00:00
## Development
2022-04-16 16:32:33 +00:00
For the latest JavaDoc release, [CLICK HERE](https://CarmJos.github.io/EasyConfiguration).
2022-04-16 16:32:33 +00:00
2023-12-24 13:01:09 +00:00
For a detailed development guide, [CLICK HERE](.doc/README.md).
### Code Samples
2022-04-16 16:32:33 +00:00
2024-01-03 15:13:25 +00:00
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)
2024-01-03 15:13:25 +00:00
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).
2022-04-16 16:32:33 +00:00
2024-01-03 15:09:28 +00:00
```java
public class Sample {
@HeaderComment("Configurations for sample")
interface SampleConfig extends Configuration {
@HeaderComment("Configure your name!") // Header comment
ConfiguredValue<String> NAME = ConfiguredValue.of("Joker");
@InlineComment("Enabled?") // Inline comment
ConfiguredValue<Boolean> ENABLED = ConfiguredValue.of(true);
}
public static void main(String[] args) {
// 1. Make a configuration provider from a file.
ConfigurationProvider<?> provider = EasyConfiguration.from("config.yml");
// 2. Initialize the configuration classes or instances.
provider.initialize(SampleConfig.class);
// 3. Enjoy using the configuration!
SampleConfig.ENABLED.set(false);
System.out.println("Your name is " + SampleConfig.NAME.getNotNull() + " !");
}
}
```
### Dependencies
2022-04-16 16:32:33 +00:00
#### Maven Dependency
2022-04-16 16:32:33 +00:00
<details>
<summary>Remote Repository Configuration</summary>
2022-04-16 16:32:33 +00:00
```xml
2022-04-16 16:32:33 +00:00
<project>
<repositories>
<repository>
<!-- Using Maven Central Repository for secure and stable updates, though synchronization might be needed. -->
2022-04-16 16:32:33 +00:00
<id>maven</id>
<name>Maven Central</name>
<url>https://repo1.maven.org/maven2</url>
</repository>
2022-04-16 16:32:33 +00:00
<repository>
<!-- Using GitHub dependencies for real-time updates, configuration required (recommended). -->
2022-04-16 16:32:33 +00:00
<id>EasyConfiguration</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/EasyConfiguration</url>
</repository>
</repositories>
</project>
```
</details>
<details>
<summary>Generic Native Dependency</summary>
2022-04-16 16:32:33 +00:00
```xml
2022-04-16 16:32:33 +00:00
<project>
<dependencies>
<!-- Basic implementation part, requiring custom implementation of “Provider” and “Wrapper”. -->
2022-04-16 16:32:33 +00:00
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyconfiguration-core</artifactId>
<version>[LATEST RELEASE]</version>
<scope>compile</scope>
</dependency>
<!-- YAML file-based implementation, compatible with all Java environments. -->
2022-04-16 16:32:33 +00:00
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyconfiguration-yaml</artifactId>
<version>[LATEST RELEASE]</version>
<scope>compile</scope>
</dependency>
<!-- JSON file-based implementation, compatible with all Java environments. Note: JSON does not support file comments. -->
2022-04-23 13:37:18 +00:00
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>easyconfiguration-json</artifactId>
<version>[LATEST RELEASE]</version>
<scope>compile</scope>
</dependency>
2022-04-16 16:32:33 +00:00
</dependencies>
</project>
```
</details>
#### Gradle Dependency
2022-04-16 16:32:33 +00:00
<details>
<summary>Remote Repository Configuration</summary>
2022-04-16 16:32:33 +00:00
```groovy
repositories {
// Using Maven Central Repository for secure and stable updates, though synchronization might be needed.
2022-04-16 16:32:33 +00:00
mavenCentral()
// Using GitHub dependencies for real-time updates, configuration required (recommended).
2022-04-16 16:32:33 +00:00
maven { url 'https://maven.pkg.github.com/CarmJos/EasyConfiguration' }
2022-04-16 16:32:33 +00:00
}
```
</details>
<details>
<summary>Generic Native Dependency</summary>
2022-04-16 16:32:33 +00:00
```groovy
dependencies {
// Basic implementation part, requiring custom implementation of “Provider” and “Wrapper”.
2022-04-16 16:32:33 +00:00
api "cc.carm.lib:easyconfiguration-core:[LATEST RELEASE]"
// YAML file-based implementation, compatible with all Java environments.
2022-04-16 16:32:33 +00:00
api "cc.carm.lib:easyconfiguration-yaml:[LATEST RELEASE]"
// JSON file-based implementation, compatible with all Java environments. Note: JSON does not support file comments.
2022-04-23 13:37:18 +00:00
api "cc.carm.lib:easyconfiguration-json:[LATEST RELEASE]"
2022-04-16 16:32:33 +00:00
}
```
</details>
## Derived Projects
2022-04-16 16:32:33 +00:00
### [**MineConfiguration**](https://github.com/CarmJos/MineConfiguration) (by @CarmJos)
2022-04-16 16:32:33 +00:00
2022-04-21 11:09:03 +00:00
EasyConfiguration for MineCraft!
Easily manage configurations on MineCraft-related server platforms.
Currently supports BungeeCord, Bukkit (Spigot) servers, with more platforms to be supported soon.
2022-04-16 16:32:33 +00:00
## Support and Donation
2022-04-16 16:32:33 +00:00
If you appreciate this plugin, consider supporting me with a donation!
2022-04-16 16:32:33 +00:00
Thank you for supporting open-source projects!
2022-04-16 16:32:33 +00:00
Many thanks to Jetbrains for kindly providing a license for us to work on this and other open-source projects.
[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/ArtformGames/ResidenceList)
2022-04-16 16:32:33 +00:00
## Open Source License
2022-04-16 16:32:33 +00:00
This project's source code is licensed under
the [GNU LESSER GENERAL PUBLIC LICENSE](https://www.gnu.org/licenses/lgpl-3.0.html).