An open API service indexing awesome lists of open source software.

https://github.com/milkdrinkers/versionwatch

Lightweight Java library to fetch the latest software versions from Spigot, Modrinth, GitHub, and more, with SemVer parsing and sync/async support.
https://github.com/milkdrinkers/versionwatch

async builtbybit bukkit curseforge github-api gradle hangar java java-8 java-library maven minecraft-plugins modrinth paper polymart semver spigot update-checker version-checker

Last synced: 10 months ago
JSON representation

Lightweight Java library to fetch the latest software versions from Spigot, Modrinth, GitHub, and more, with SemVer parsing and sync/async support.

Awesome Lists containing this project

README

          

VersionWatch



GitHub License


Maven Central Version


Documentation


Javadoc

GitHub Actions Workflow Status

GitHub Issues

GitHub last commit

**VersionWatch** is a lightweight, easy-to-use Java library that simplifies version monitoring across popular software distribution platforms.

It supports both synchronous and asynchronous requests and leverages **Semantic Versioning (SemVer)** for parsing and comparing versions via the [`Java-Semver`](https://github.com/MilkDrinkers/Java-Semver) library.

---

## 🌟 Features

- **Java 8+ compatible**: Works with older and modern Java environments.
- **Sync/Async support**: Choose between blocking or non-blocking requests.
- **Well-tested**: Robust JUnit test coverage ensures reliability.
- **Simple API**: Minimal setup and intuitive methods.
- **SemVer Support**: Built on [`Java-Semver`](https://github.com/MilkDrinkers/Java-Semver) for reliable parsing and comparison of semantic versions.
- **Light**: The library is built with bundle size in mind to keep your application small.
- **Wide Support**: Supports fetching versions from **Spigot**, **Modrinth**, **CurseForge**, **GitHub**, **Hangar**, **BuiltByBit** and **Polymart**.

## 📦 Installation

Add VersionWatch and its `Java-Semver` dependency to your project with Maven or Gradle:

Gradle Kotlin DSL

```kotlin
repositories {
mavenCentral()
}

dependencies {
implementation("io.github.milkdrinkers:versionwatch:LATEST_VERSION")
implementation("io.github.milkdrinkers:javasemver:LATEST_VERSION")
}
```

Maven

```xml



io.github.milkdrinkers
versionwatch
LATEST_VERSION


io.github.milkdrinkers
javasemver
LATEST_VERSION

```

## Usage Example 🚀
```java
import io.github.milkdrinkers.javasemver.Version;
import io.github.milkdrinkers.versionwatch.Platform;
import io.github.milkdrinkers.versionwatch.VersionWatcher;

final Version currentVersion = Version.of("1.0.0");

// Build a version watcher for spigot
final VersionWatcher watcher = VersionWatcher.builder()
.withPlatform(Platform.Spigot)
.withVersion(currentVersion)
.withResourceId("1234567")
.withAgent("VersionWatch")
.build();

// Fetch the latest version with a blocking request
final Version latestVersion = watcher.fetchLatest(); // The result is cached in the watcher

System.out.println("Has update: " + !watcher.isLatest().toString())
```

## 📚 Documentation

- [Full Javadoc Documentation](https://javadoc.io/doc/io.github.milkdrinkers/versionwatch)
- [Documentation](https://milkdrinkers.athyrium.eu/versionwatch)
- [Maven Central](https://central.sonatype.com/artifact/io.github.milkdrinkers/versionwatch)

---

## 🔨 Building from Source

```bash
git clone https://github.com/milkdrinkers/VersionWatch.git
cd versionwatch
./gradlew publishToMavenLocal
```

---

## 🔧 Contributing

Contributions are always welcome! Please make sure to read our [Contributor's Guide](CONTRIBUTING.md) for standards and our [Contributor License Agreement (CLA)](CONTRIBUTOR_LICENSE_AGREEMENT.md) before submitting any pull requests.

We also ask that you adhere to our [Contributor Code of Conduct](CODE_OF_CONDUCT.md) to ensure this community remains a place where all feel welcome to participate.

---

## 📝 Licensing

You can find the license the source code and all assets are under [here](../LICENSE). Additionally, contributors agree to the Contributor License Agreement \(*CLA*\) found [here](CONTRIBUTOR_LICENSE_AGREEMENT.md).