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
library.
- 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
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.
Add VersionWatch and its Java-Semver
dependency to your project with Maven or Gradle:
Gradle Kotlin DSL
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.milkdrinkers:versionwatch:LATEST_VERSION")
implementation("io.github.milkdrinkers:javasemver:LATEST_VERSION")
}
Maven
<project>
<dependencies>
<dependency>
<groupId>io.github.milkdrinkers</groupId>
<artifactId>versionwatch</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>io.github.milkdrinkers</groupId>
<artifactId>javasemver</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
</project>
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())
git clone https://github.com/milkdrinkers/VersionWatch.git
cd versionwatch
./gradlew publishToMavenLocal
Contributions are always welcome! Please make sure to read our Contributor's Guide for standards and our Contributor License Agreement (CLA) before submitting any pull requests.
We also ask that you adhere to our Contributor Code of Conduct to ensure this community remains a place where all feel welcome to participate.
You can find the license the source code and all assets are under here. Additionally, contributors agree to the Contributor License Agreement (CLA) found here.
Here is a list of known projects using VersionWatch:
- Minecraft-Plugin-Template - Provided by default in a Minecraft Plugin Template.
- RaidsPerRegion - RaidsPerRegion a Minecraft PvE raids plugin.
- Maquillage - Maquillage a Minecraft cosmetics plugin.
- Stewards - Stewards a Minecraft Towny NPC extension plugin.
- CharacterCards - CharacterCards is a Minecraft plugin allowing players to create cards describing their character.
- (Add your project here!)