Skip to content

Commit 1db66f8

Browse files
authored
Merge pull request #46 from faststats-dev/feat/downgraded-publications
Enhance build with Java downgrade support and publishing
2 parents 6ecd2a9 + fb8c240 commit 1db66f8

File tree

2 files changed

+109
-8
lines changed

2 files changed

+109
-8
lines changed

build.gradle.kts

Lines changed: 108 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,45 @@
1+
import xyz.wagyourtail.jvmdg.gradle.task.DowngradeJar
2+
3+
plugins {
4+
id("java")
5+
id("xyz.wagyourtail.jvmdowngrader") version "1.3.4" apply false
6+
}
7+
8+
val downgradedVersions = mapOf(
9+
"bukkit" to setOf(8, 11, 16),
10+
"bungeecord" to setOf(8, 11, 16),
11+
"core" to setOf(8, 11, 16),
12+
"velocity" to setOf(17)
13+
)
14+
val javaVersion = 21
15+
116
subprojects {
217
apply(plugin = "java")
318
apply(plugin = "java-library")
419
apply(plugin = "maven-publish")
520

21+
if (downgradedVersions.containsKey(project.name)) {
22+
apply(plugin = "xyz.wagyourtail.jvmdowngrader")
23+
}
24+
625
group = "dev.faststats.metrics"
726

827
repositories {
928
mavenCentral()
1029
}
1130

1231
extensions.configure<JavaPluginExtension> {
13-
toolchain.languageVersion = JavaLanguageVersion.of(21)
32+
toolchain.languageVersion = JavaLanguageVersion.of(javaVersion)
1433
withSourcesJar()
1534
withJavadocJar()
1635
}
1736

18-
tasks.named<JavaCompile>("compileJava") {
19-
options.release.set(21)
37+
tasks.compileJava {
38+
options.release.set(javaVersion)
2039
}
2140

22-
tasks.named<Test>("test") {
23-
dependsOn(tasks.named("javadoc"))
41+
tasks.test {
42+
dependsOn(tasks.javadoc)
2443
useJUnitPlatform()
2544
testLogging {
2645
events("passed", "skipped", "failed")
@@ -47,19 +66,65 @@ subprojects {
4766
}
4867
}
4968

50-
tasks.named<Javadoc>("javadoc") {
69+
tasks.javadoc {
5170
val options = options as StandardJavadocDocletOptions
5271
options.tags("apiNote:a:API Note:", "implSpec:a:Implementation Requirements:")
5372
project.findProperty("moduleName")?.let { moduleName ->
5473
options.addStringOption("-add-reads", "$moduleName=ALL-UNNAMED")
5574
}
5675
}
5776

77+
tasks.build {
78+
if (!downgradedVersions.containsKey(project.name)) return@build
79+
dependsOn(tasks.named("shadeDowngradedApi"))
80+
}
81+
82+
downgradedVersions[project.name]?.forEach { javaVersion ->
83+
// Create downgradeJar task
84+
tasks.register<DowngradeJar>("downgradeJar$javaVersion") {
85+
group = "jvmdowngrader"
86+
description = "Downgrade JAR to Java $javaVersion compatibility"
87+
88+
dependsOn(tasks.jar)
89+
90+
inputFile.set(tasks.jar.flatMap { it.archiveFile })
91+
downgradeTo.set(JavaVersion.toVersion(javaVersion))
92+
classpath = (sourceSets["main"].compileClasspath)
93+
archiveClassifier.set("java-$javaVersion")
94+
}
95+
96+
// Create downgradeSources task
97+
tasks.register<DowngradeJar>("downgradeSources$javaVersion") {
98+
group = "jvmdowngrader"
99+
description = "Downgrade sources JAR to Java $javaVersion compatibility"
100+
101+
dependsOn(tasks.named("sourcesJar"))
102+
103+
inputFile.set(tasks.named<Jar>("sourcesJar").flatMap { it.archiveFile })
104+
downgradeTo.set(JavaVersion.toVersion(javaVersion))
105+
classpath = (sourceSets["main"].compileClasspath)
106+
archiveClassifier.set("java-$javaVersion-sources")
107+
}
108+
109+
// Create downgradeJavadoc task
110+
tasks.register<DowngradeJar>("downgradeJavadoc$javaVersion") {
111+
group = "jvmdowngrader"
112+
description = "Downgrade javadoc JAR to Java $javaVersion compatibility"
113+
114+
dependsOn(tasks.named("javadocJar"))
115+
116+
inputFile.set(tasks.named<Jar>("javadocJar").flatMap { it.archiveFile })
117+
downgradeTo.set(JavaVersion.toVersion(javaVersion))
118+
classpath = (sourceSets["main"].compileClasspath)
119+
archiveClassifier.set("java-$javaVersion-javadoc")
120+
}
121+
}
122+
58123
afterEvaluate {
59124
extensions.configure<PublishingExtension> {
60125
publications.create<MavenPublication>("maven") {
61126
artifactId = project.name
62-
groupId = "dev.faststats.metrics"
127+
groupId = "dev.faststats.metrics.java-$javaVersion"
63128

64129
pom {
65130
url.set("https://faststats.dev/docs")
@@ -74,6 +139,42 @@ subprojects {
74139
from(components["java"])
75140
}
76141

142+
// Create publications for downgraded versions
143+
downgradedVersions[project.name]?.forEach { javaVersion ->
144+
publications.create<MavenPublication>("mavenJava${javaVersion}") {
145+
artifactId = project.name
146+
groupId = "dev.faststats.metrics.java-$javaVersion"
147+
148+
pom {
149+
url.set("https://faststats.dev/docs")
150+
scm {
151+
val repository = "faststats-dev/dev-kits"
152+
url.set("https://github.com/$repository")
153+
connection.set("scm:git:git://github.com/$repository.git")
154+
developerConnection.set("scm:git:ssh://github.com/$repository.git")
155+
}
156+
description.set("Downgraded to Java $javaVersion compatibility")
157+
}
158+
159+
// Add downgraded jar
160+
artifact(tasks.named("downgradeJar$javaVersion"))
161+
162+
// Add downgraded sources if available
163+
tasks.findByName("downgradeSources$javaVersion")?.let { sourcesTask ->
164+
artifact(sourcesTask) {
165+
classifier = "sources"
166+
}
167+
}
168+
169+
// Add downgraded javadoc if available
170+
tasks.findByName("downgradeJavadoc$javaVersion")?.let { javadocTask ->
171+
artifact(javadocTask) {
172+
classifier = "javadoc"
173+
}
174+
}
175+
}
176+
}
177+
77178
repositories {
78179
maven {
79180
val channel = if ((version as String).contains("-pre")) "snapshots" else "releases"

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=0.6.0
1+
version=0.7.0

0 commit comments

Comments
 (0)