Skip to content

Commit cf38523

Browse files
authored
Use JDK downloader and merge subprojects (#208)
* Replace Apache downloader with JDK downloader * Fix TeeSubscriber buffer position * Fix: create parent directory before downloading * Merge subprojects They are no longer needed since we use the JDK downloader * Move downloader impl package * Prefer slf4j logger
1 parent 06b3632 commit cf38523

File tree

122 files changed

+230
-1020
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+230
-1020
lines changed

build.gradle.kts

Lines changed: 174 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,209 @@
11
import com.diffplug.gradle.spotless.FormatExtension
22

33
plugins {
4+
`java-gradle-plugin`
45
eclipse
6+
signing
57
alias(libs.plugins.ideaExt)
6-
alias(libs.plugins.indra) apply false
7-
alias(libs.plugins.indra.publishing) apply false
8-
alias(libs.plugins.indra.git) apply false
8+
alias(libs.plugins.indra)
9+
alias(libs.plugins.indra.git)
910
alias(libs.plugins.spotless)
10-
alias(libs.plugins.indra.licenserSpotless) apply false
11-
alias(libs.plugins.eclipseApt) apply false
11+
alias(libs.plugins.indra.licenserSpotless)
12+
alias(libs.plugins.gradlePluginPublish)
13+
alias(libs.plugins.indra.publishing.gradlePlugin)
14+
alias(libs.plugins.blossom)
15+
alias(libs.plugins.eclipseApt)
1216
}
1317

1418
group = "org.spongepowered"
1519
version = "0.3.1-SNAPSHOT"
1620

21+
val commonDeps by configurations.creating {
22+
}
23+
val jarMerge by sourceSets.creating {
24+
configurations.named(this.implementationConfigurationName) { extendsFrom(commonDeps) }
25+
}
26+
val jarDecompile by sourceSets.creating {
27+
configurations.named(this.implementationConfigurationName) { extendsFrom(commonDeps) }
28+
}
29+
val accessWiden by sourceSets.creating {
30+
configurations.named(this.implementationConfigurationName) { extendsFrom(commonDeps) }
31+
}
32+
val shadow by sourceSets.creating {
33+
configurations.named(this.implementationConfigurationName) { extendsFrom(commonDeps) }
34+
}
1735

18-
spotless {
19-
format("configs") {
20-
target("**/*.yaml", "**/*.yml", "**/*.xml", "**/*.json")
36+
configurations {
37+
api { extendsFrom(commonDeps) }
38+
}
2139

22-
val excludedTargets = mutableListOf(".idea/**", "build/**", ".gradle/**")
23-
project.subprojects {
24-
excludedTargets.add(projectDir.toRelativeString(rootDir) + "/**")
25-
}
26-
targetExclude(excludedTargets)
40+
val accessWidenerVersion: String by project
41+
val asmVersion: String by project
42+
val checkerVersion: String by project
43+
val vineFlowerVersion: String by project
44+
val junitVersion: String by project
45+
val mergeToolVersion: String by project
46+
dependencies {
47+
// All source sets
48+
commonDeps(gradleApi())
49+
commonDeps(libs.asm)
50+
commonDeps(libs.asm.commons)
51+
commonDeps(libs.asm.util)
52+
commonDeps(libs.mammoth)
53+
54+
// Just main
55+
implementation(libs.gson)
56+
57+
compileOnlyApi(libs.checkerQual)
58+
annotationProcessor(libs.immutables.value)
59+
compileOnlyApi(variantOf(libs.immutables.value) { classifier("annotations") })
60+
api(libs.immutables.gson)
61+
62+
// IDE support
63+
implementation(libs.ideaExt)
64+
65+
// Jar merge worker (match with Constants)
66+
"jarMergeCompileOnly"(libs.mergeTool) {
67+
exclude("org.ow2.asm")
68+
}
69+
implementation(jarMerge.output)
2770

28-
endWithNewline()
29-
trimTrailingWhitespace()
71+
// Jar decompile worker (match with Constants)
72+
"jarDecompileCompileOnly"(libs.vineFlower)
73+
implementation(jarDecompile.output)
74+
75+
// Access widener worker (match with Constants)
76+
"accessWidenCompileOnly"(libs.accessWidener) {
77+
exclude("org.ow2.asm")
3078
}
79+
implementation(accessWiden.output)
80+
81+
"shadowCompileOnly"(libs.shadowPlugin)
82+
implementation(shadow.output)
83+
84+
testImplementation(platform(libs.junit.bom))
85+
testImplementation(libs.junit.api)
86+
testRuntimeOnly(libs.junit.launcher)
87+
testRuntimeOnly(libs.junit.engine)
3188
}
3289

33-
subprojects {
34-
apply(plugin="net.kyori.indra")
35-
apply(plugin="net.kyori.indra.licenser.spotless")
36-
apply(plugin="net.kyori.indra.git")
37-
apply(plugin="com.diffplug.eclipse.apt")
38-
apply(plugin="signing")
90+
sourceSets.main {
91+
blossom.javaSources {
92+
properties.putAll(mutableMapOf(
93+
"asmVersion" to libs.versions.asm.get(),
94+
"vineFlowerVersion" to libs.versions.vineFlower.get(),
95+
"mergeToolVersion" to libs.versions.mergeTool.get(),
96+
"accessWidenerVersion" to libs.versions.accessWidener.get()
97+
))
98+
}
99+
}
39100

40-
extensions.configure(net.kyori.indra.IndraExtension::class) {
41-
github("SpongePowered", "VanillaGradle") {
42-
ci(true)
43-
}
44-
mitLicense()
101+
tasks {
102+
withType(Jar::class).configureEach {
103+
// project.extensions.getByType(net.kyori.indra.git.IndraGitExtension::class).applyVcsInformationToManifest(manifest)
104+
manifest.attributes(
105+
"Specification-Title" to "VanillaGradle",
106+
"Specification-Vendor" to "SpongePowered",
107+
"Specification-Version" to project.version,
108+
"Implementation-Title" to project.name,
109+
"Implementation-Version" to project.version,
110+
"Implementation-Vendor" to "SpongePowered"
111+
)
112+
}
45113

46-
javaVersions {
47-
target(25)
48-
}
114+
withType(JavaCompile::class).configureEach {
115+
options.compilerArgs.addAll(listOf("-Xlint:-processing", "-Xlint:-this-escape"))
116+
}
117+
118+
jar {
119+
from(jarMerge.output)
120+
from(jarDecompile.output)
121+
from(accessWiden.output)
122+
from(shadow.output)
123+
}
124+
125+
publishPlugins {
126+
onlyIf { net.kyori.indra.util.Versioning.isRelease(project) }
127+
}
128+
}
129+
130+
indraPluginPublishing {
131+
website("https://spongepowered.org")
132+
bundleTags(listOf("minecraft", "vanilla"))
133+
plugin(
134+
/* id = */ "gradle.vanilla",
135+
/* mainClass = */ "org.spongepowered.gradle.vanilla.VanillaGradle",
136+
/* displayName = */ "VanillaGradle",
137+
/* description = */ "Set up a Minecraft workspace for project development"
138+
)
139+
}
140+
141+
extensions.configure(net.kyori.indra.IndraExtension::class) {
142+
github("SpongePowered", "VanillaGradle") {
143+
ci(true)
144+
}
145+
mitLicense()
146+
147+
javaVersions {
148+
target(25)
149+
}
49150

50-
configurePublications {
51-
pom {
52-
organization {
53-
name.set("SpongePowered")
54-
url.set("https://spongepowered.org")
55-
}
151+
configurePublications {
152+
pom {
153+
organization {
154+
name.set("SpongePowered")
155+
url.set("https://spongepowered.org")
56156
}
57157
}
158+
}
58159

59-
signWithKeyFromPrefixedProperties("sponge")
60-
if (
61-
project.hasProperty("spongeSnapshotRepo") &&
62-
project.hasProperty("spongeReleaseRepo")
63-
) {
64-
publishSnapshotsTo("sponge", project.property("spongeSnapshotRepo") as String)
65-
publishReleasesTo("sponge", project.property("spongeReleaseRepo") as String)
66-
}
160+
signWithKeyFromPrefixedProperties("sponge")
161+
if (
162+
project.hasProperty("spongeSnapshotRepo") &&
163+
project.hasProperty("spongeReleaseRepo")
164+
) {
165+
publishSnapshotsTo("sponge", project.property("spongeSnapshotRepo") as String)
166+
publishReleasesTo("sponge", project.property("spongeReleaseRepo") as String)
67167
}
168+
}
68169

69-
extensions.configure(net.kyori.indra.licenser.spotless.IndraSpotlessLicenserExtension::class) {
70-
val organization: String by project
71-
val projectUrl: String by project
170+
extensions.configure(net.kyori.indra.licenser.spotless.IndraSpotlessLicenserExtension::class) {
171+
val organization: String by project
172+
val projectUrl: String by project
72173

73-
properties().apply {
74-
put("name", "VanillaGradle")
75-
put("organization", organization)
76-
put("url", projectUrl)
77-
}
78-
licenseHeaderFile(rootProject.file("HEADER.txt"))
174+
properties().apply {
175+
put("name", "VanillaGradle")
176+
put("organization", organization)
177+
put("url", projectUrl)
79178
}
179+
licenseHeaderFile(rootProject.file("HEADER.txt"))
180+
}
80181

81-
spotless {
82-
fun FormatExtension.applyCommonSettings() {
83-
endWithNewline()
84-
indentWithSpaces(4)
85-
trimTrailingWhitespace()
86-
toggleOffOn("@formatter:off", "@formatter:on")
87-
}
182+
spotless {
183+
fun FormatExtension.applyCommonSettings() {
184+
endWithNewline()
185+
indentWithSpaces(4)
186+
trimTrailingWhitespace()
187+
toggleOffOn("@formatter:off", "@formatter:on")
188+
}
88189

89-
java {
90-
targetExclude("build/generated/**")
91-
applyCommonSettings()
92-
importOrderFile(rootProject.file(".spotless/sponge.importorder"))
93-
}
190+
java {
191+
targetExclude("build/generated/**")
192+
applyCommonSettings()
193+
importOrderFile(rootProject.file(".spotless/sponge.importorder"))
194+
}
94195

95-
kotlinGradle {
96-
applyCommonSettings()
97-
// ktlint()
98-
// .editorConfigOverride(mapOf("ij_kotlin_imports_layout" to "$*,|,*,|,java.**,|,javax.**"))
99-
}
196+
kotlinGradle {
197+
applyCommonSettings()
198+
// ktlint()
199+
// .editorConfigOverride(mapOf("ij_kotlin_imports_layout" to "$*,|,*,|,java.**,|,javax.**"))
100200
}
101201

102-
tasks {
103-
withType(Jar::class).configureEach {
104-
// project.extensions.getByType(net.kyori.indra.git.IndraGitExtension::class).applyVcsInformationToManifest(manifest)
105-
manifest.attributes(
106-
"Specification-Title" to "VanillaGradle",
107-
"Specification-Vendor" to "SpongePowered",
108-
"Specification-Version" to project.version,
109-
"Implementation-Title" to project.name,
110-
"Implementation-Version" to project.version,
111-
"Implementation-Vendor" to "SpongePowered"
112-
)
113-
}
202+
format("configs") {
203+
target("**/*.yaml", "**/*.yml", "**/*.xml", "**/*.json")
204+
targetExclude(".idea/**", "build/**", ".gradle/**", "src/test/**")
114205

115-
withType(JavaCompile::class).configureEach {
116-
options.compilerArgs.addAll(listOf("-Xlint:-processing", "-Xlint:-this-escape"))
117-
}
206+
endWithNewline()
207+
trimTrailingWhitespace()
118208
}
119209
}

gradle/libs.versions.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ mammoth = "1.5.0"
1717
# shared
1818
checkerQual = { module = "org.checkerframework:checker-qual", version.ref = "checker" }
1919

20-
# downloader-apache-http
21-
apache-httpClient5 = { module = "org.apache.httpcomponents.client5:httpclient5", version = "5.5.1" }
22-
2320
# gradle-plugin
2421
accessWidener = { module = "net.fabricmc:access-widener", version.ref = "accessWidener" }
2522
asm = { module = "org.ow2.asm:asm", version.ref = "asm" }

settings.gradle.kts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,4 @@ dependencyResolutionManagement {
1515
pluginManagement.repositories.forEach(repositories::add)
1616
}
1717

18-
rootProject.name = "vanillagradle-parent"
19-
20-
// The Gradle plugin maintains a different name convention to preserve history
21-
include("gradle-plugin")
22-
findProject(":gradle-plugin")?.apply {
23-
name = "vanillagradle"
24-
projectDir = file("subprojects/gradle-plugin")
25-
}
26-
27-
sequenceOf("resolver-core", "downloader-apache-http", "downloader-jdk-http").forEach {
28-
include(it)
29-
findProject(":$it")?.apply {
30-
name = "vanillagradle-$it"
31-
projectDir = file("subprojects/$it")
32-
}
33-
}
18+
rootProject.name = "vanillagradle"

subprojects/gradle-plugin/src/accessWiden/java/org/spongepowered/gradle/vanilla/internal/worker/AccessWidenerEntryTransformer.java renamed to src/accessWiden/java/org/spongepowered/gradle/vanilla/internal/worker/AccessWidenerEntryTransformer.java

File renamed without changes.

subprojects/gradle-plugin/src/accessWiden/java/org/spongepowered/gradle/vanilla/internal/worker/AccessWidenerTransformerProvider.java renamed to src/accessWiden/java/org/spongepowered/gradle/vanilla/internal/worker/AccessWidenerTransformerProvider.java

File renamed without changes.

subprojects/gradle-plugin/src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/Decompilation.java renamed to src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/Decompilation.java

File renamed without changes.

subprojects/gradle-plugin/src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/JarDecompileWorker.java renamed to src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/JarDecompileWorker.java

File renamed without changes.

subprojects/gradle-plugin/src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/LineMappingResultSaver.java renamed to src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/LineMappingResultSaver.java

File renamed without changes.

subprojects/gradle-plugin/src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/LineMappingVisitor.java renamed to src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/LineMappingVisitor.java

File renamed without changes.

subprojects/gradle-plugin/src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/SLF4JFernFlowerLogger.java renamed to src/jarDecompile/java/org/spongepowered/gradle/vanilla/internal/worker/SLF4JFernFlowerLogger.java

File renamed without changes.

0 commit comments

Comments
 (0)