Skip to content

Building from Source

shvquu edited this page Jun 22, 2026 · 5 revisions

Building from Source

Requirements

  • JDK 21 (Temurin/OpenJDK)
  • Gradle 9.0+ (the Shadow plugin requires it) — or just use the included wrapper (./gradlew)

Build the plugin

gradle :serverdoctor-universal:shadowJar

Output: serverdoctor-universal/build/libs/serverdoctor-0.10.0.jar — the universal jar that runs on Paper/Folia, Velocity and BungeeCord.

Run the tests

gradle test

This runs the JUnit 5 suite and the ArchUnit architecture tests. JUnit must stay on the 5.x line — ArchUnit's JUnit 5 integration does not yet support JUnit Platform 6. Coverage includes version/severity logic, the AnalysisResult builder, scanner-registry capability gating, the event bus (including error isolation), the scanner thresholds, the recommendation engine, the analysis engine end-to-end, and storage round-trips. The ArchUnit rules enforce the boundaries described in Architecture.

Dependencies of note

  • org.xerial:sqlite-jdbc — SQLite
  • com.zaxxer:HikariCP — connection pool for the SQL backends
  • org.postgresql:postgresql, org.mariadb.jdbc:mariadb-java-client — SQL drivers
  • org.mongodb:mongodb-driver-sync — MongoDB
  • org.yaml:snakeyaml — config parsing on Velocity
  • serverdoctor-rest-api / serverdoctor-webhookno external dependencies (JDK com.sun.net.httpserver and java.net.http)
  • io.papermc.paper:paper-api, com.velocitypowered:velocity-api, net.md-5:bungeecord-apicompileOnly (the BungeeCord API is a snapshot; the Sonatype snapshots repository must be present in settings.gradle.kts)
  • me.clip:placeholderapicompileOnly (optional integration)

Versions are managed in gradle/libs.versions.toml.

Publishing the API (JitPack)

jitpack.yml publishes serverdoctor-common and serverdoctor-api to Maven Local, so other projects can depend on the API through JitPack. See Developer API.

Module layout

See Architecture for what each module does and how they depend on one another.

Clone this wiki locally