From e53b171d30a7e4af8017832847485d2c89daff04 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 26 Dec 2025 15:43:32 +0100 Subject: [PATCH 1/5] Enhance build with Java downgrade support and publishing --- build.gradle.kts | 115 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7ec49c1..0f0699c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,27 @@ +import xyz.wagyourtail.jvmdg.gradle.task.DowngradeJar + +plugins { + id("java") + id("xyz.wagyourtail.jvmdowngrader") version "1.3.4" apply false +} + +val downgradedVersions = mapOf( + "bukkit" to setOf(8, 11, 16), + "bungeecord" to setOf(8, 11, 16), + "core" to setOf(8, 11, 16), + "velocity" to setOf(17) +) +val javaVersion = 21 + subprojects { apply(plugin = "java") apply(plugin = "java-library") apply(plugin = "maven-publish") + if (downgradedVersions.containsKey(project.name)) { + apply(plugin = "xyz.wagyourtail.jvmdowngrader") + } + group = "dev.faststats.metrics" repositories { @@ -10,17 +29,17 @@ subprojects { } extensions.configure { - toolchain.languageVersion = JavaLanguageVersion.of(21) + toolchain.languageVersion = JavaLanguageVersion.of(javaVersion) withSourcesJar() withJavadocJar() } - tasks.named("compileJava") { - options.release.set(21) + tasks.compileJava { + options.release.set(javaVersion) } - tasks.named("test") { - dependsOn(tasks.named("javadoc")) + tasks.test { + dependsOn(tasks.javadoc) useJUnitPlatform() testLogging { events("passed", "skipped", "failed") @@ -47,7 +66,7 @@ subprojects { } } - tasks.named("javadoc") { + tasks.javadoc { val options = options as StandardJavadocDocletOptions options.tags("apiNote:a:API Note:", "implSpec:a:Implementation Requirements:") project.findProperty("moduleName")?.let { moduleName -> @@ -55,10 +74,56 @@ subprojects { } } + tasks.build { + if (!downgradedVersions.containsKey(project.name)) return@build + dependsOn(tasks.named("shadeDowngradedApi")) + } + + downgradedVersions[project.name]?.forEach { javaVersion -> + // Create downgradeJar task + tasks.register("downgradeJar$javaVersion") { + group = "jvmdowngrader" + description = "Downgrade JAR to Java $javaVersion compatibility" + + dependsOn(tasks.jar) + + inputFile.set(tasks.jar.flatMap { it.archiveFile }) + downgradeTo.set(JavaVersion.toVersion(javaVersion)) + classpath = (sourceSets["main"].compileClasspath) + archiveClassifier.set("java-$javaVersion") + } + + // Create downgradeSources task + tasks.register("downgradeSources$javaVersion") { + group = "jvmdowngrader" + description = "Downgrade sources JAR to Java $javaVersion compatibility" + + dependsOn(tasks.named("sourcesJar")) + + inputFile.set(tasks.named("sourcesJar").flatMap { it.archiveFile }) + downgradeTo.set(JavaVersion.toVersion(javaVersion)) + classpath = (sourceSets["main"].compileClasspath) + archiveClassifier.set("java-$javaVersion-sources") + } + + // Create downgradeJavadoc task + tasks.register("downgradeJavadoc$javaVersion") { + group = "jvmdowngrader" + description = "Downgrade javadoc JAR to Java $javaVersion compatibility" + + dependsOn(tasks.named("javadocJar")) + + inputFile.set(tasks.named("javadocJar").flatMap { it.archiveFile }) + downgradeTo.set(JavaVersion.toVersion(javaVersion)) + classpath = (sourceSets["main"].compileClasspath) + archiveClassifier.set("java-$javaVersion-javadoc") + } + } + afterEvaluate { extensions.configure { publications.create("maven") { - artifactId = project.name + artifactId = "${project.name}-java-$javaVersion" groupId = "dev.faststats.metrics" pom { @@ -74,6 +139,42 @@ subprojects { from(components["java"]) } + // Create publications for downgraded versions + downgradedVersions[project.name]?.forEach { javaVersion -> + publications.create("mavenJava${javaVersion}") { + artifactId = "${project.name}-java-$javaVersion" + groupId = "dev.faststats.metrics" + + pom { + url.set("https://faststats.dev/docs") + scm { + val repository = "faststats-dev/dev-kits" + url.set("https://github.com/$repository") + connection.set("scm:git:git://github.com/$repository.git") + developerConnection.set("scm:git:ssh://github.com/$repository.git") + } + description.set("Downgraded to Java $javaVersion compatibility") + } + + // Add downgraded jar + artifact(tasks.named("downgradeJar$javaVersion")) + + // Add downgraded sources if available + tasks.findByName("downgradeSources$javaVersion")?.let { sourcesTask -> + artifact(sourcesTask) { + classifier = "sources" + } + } + + // Add downgraded javadoc if available + tasks.findByName("downgradeJavadoc$javaVersion")?.let { javadocTask -> + artifact(javadocTask) { + classifier = "javadoc" + } + } + } + } + repositories { maven { val channel = if ((version as String).contains("-pre")) "snapshots" else "releases" From 009ffc98a8b7b809ac6d93e36d47e0d18ba5300c Mon Sep 17 00:00:00 2001 From: david Date: Fri, 26 Dec 2025 15:57:42 +0100 Subject: [PATCH 2/5] Update version to 0.7.0-pre1 in gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index af0eb1c..c0cd997 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.6.0 +version=0.7.0-pre1 From 8cdc85a0d8be2cccf665eec7181a2afd51c4cbf6 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 26 Dec 2025 16:12:53 +0100 Subject: [PATCH 3/5] Update artifactId and groupId for Java versions --- build.gradle.kts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0f0699c..ab0f7ac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -123,8 +123,8 @@ subprojects { afterEvaluate { extensions.configure { publications.create("maven") { - artifactId = "${project.name}-java-$javaVersion" - groupId = "dev.faststats.metrics" + artifactId = project.name + groupId = "dev.faststats.metrics.java$javaVersion" pom { url.set("https://faststats.dev/docs") @@ -142,8 +142,8 @@ subprojects { // Create publications for downgraded versions downgradedVersions[project.name]?.forEach { javaVersion -> publications.create("mavenJava${javaVersion}") { - artifactId = "${project.name}-java-$javaVersion" - groupId = "dev.faststats.metrics" + artifactId = project.name + groupId = "dev.faststats.metrics.java$javaVersion" pom { url.set("https://faststats.dev/docs") From ec2ab2730e752eca42788d9f22be93cce62c88b8 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 26 Dec 2025 16:15:17 +0100 Subject: [PATCH 4/5] Fix groupId format in build.gradle.kts for Java versions --- build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ab0f7ac..a0e0238 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -124,7 +124,7 @@ subprojects { extensions.configure { publications.create("maven") { artifactId = project.name - groupId = "dev.faststats.metrics.java$javaVersion" + groupId = "dev.faststats.metrics.java-$javaVersion" pom { url.set("https://faststats.dev/docs") @@ -143,7 +143,7 @@ subprojects { downgradedVersions[project.name]?.forEach { javaVersion -> publications.create("mavenJava${javaVersion}") { artifactId = project.name - groupId = "dev.faststats.metrics.java$javaVersion" + groupId = "dev.faststats.metrics.java-$javaVersion" pom { url.set("https://faststats.dev/docs") From fb8c240fe6c9448ed402be07d743d2eace06bd15 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 26 Dec 2025 16:29:23 +0100 Subject: [PATCH 5/5] Update version to 0.7.0 in gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c0cd997..f13969c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.7.0-pre1 +version=0.7.0