diff --git a/build-logic/src/main/kotlin/buildlogic.common.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts index f88fa774ba..e57c83c330 100644 --- a/build-logic/src/main/kotlin/buildlogic.common.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts @@ -7,9 +7,6 @@ plugins { id("org.enginehub.crankcase.git") } -group = rootProject.group -version = rootProject.version - dependencies { for (conf in listOf("implementation", "api")) { if (!configurations.names.contains(conf)) { diff --git a/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts b/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts index 94e0ff490f..4ed1d8dcbf 100644 --- a/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts @@ -21,7 +21,7 @@ configurations { create("shade") } -group = "${rootProject.group}.worldedit-libs" +group = "${group}.worldedit-libs" val relocations = mapOf( "net.kyori.text" to "com.sk89q.worldedit.util.formatting.text", diff --git a/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts b/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts index b24794c27e..ac879ceef4 100644 --- a/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts @@ -24,9 +24,10 @@ tasks.named("shadowJ "tree", "format-snbt" ).map { stringyLibs.getLibrary("linBus-$it").get() } + val platformLibName = project.name.replace("worldedit-", "") dependencies { include(project(":worldedit-libs:core")) - include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}")) + include(project(":worldedit-libs:$platformLibName")) include(project(":worldedit-core")) include(project(":worldedit-core-mc")) include(dependency(jchronic)) diff --git a/gradle.properties b/gradle.properties index 9c58f07865..76441b51d3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,4 @@ group=com.sk89q.worldedit version=7.4.6-SNAPSHOT org.gradle.jvmargs=-Xmx2000M -org.gradle.parallel=true org.gradle.configuration-cache=true -org.gradle.configuration-cache.parallel=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 936de2f935..5fb00ae081 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -51,7 +51,7 @@ crankcase-publishing = { module = "org.enginehub.crankcase:publishing", version. levelHeadered = "net.octyl.level-headered:plugin:0.1.1" japicmp = "me.champeau.gradle:japicmp-gradle-plugin:0.4.6" -shadow = "com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:9.3.2" +shadow = "com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:9.6.1" jfrog-buildinfo = "org.jfrog.buildinfo:build-info-extractor-gradle:6.0.4" errorprone-gradle-plugin = "net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:5.1.0" diff --git a/verification/build.gradle.kts b/verification/build.gradle.kts index 83a0a41ce1..00ae90aee7 100644 --- a/verification/build.gradle.kts +++ b/verification/build.gradle.kts @@ -7,7 +7,7 @@ plugins { } // Pull the version before our current version. -val baseVersion = "(,${rootProject.version.toString().substringBefore("-SNAPSHOT")}[" +val baseVersion = "(,${version.toString().substringBefore("-SNAPSHOT")}[" // TODO Re-add neoforge when it's fixed for (projectFragment in listOf("bukkit", "core", "fabric", "sponge")) { diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index cca9e099d3..1adf1fc97d 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -97,10 +97,17 @@ tasks.named("shadowJar") { from(zipTree(shadeReobfAdapters.map { it.archiveFile })) configurations.add(project.configurations.named("runtimeClasspath")) configurations.add(adapters.get()) + + // In tandem with not bundling log4j, we shouldn't relocate base package here. + // relocate("org.apache.logging", "com.sk89q.worldedit.log4j") + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") + relocate("org.bstats", "com.sk89q.worldedit.bstats") + relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") + relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") + relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") + + val ownArtifact = "$group:$name" dependencies { - // In tandem with not bundling log4j, we shouldn't relocate base package here. - // relocate("org.apache.logging", "com.sk89q.worldedit.log4j") - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") // Purposefully not included, we assume (even though no API exposes it) that Log4J will be present at runtime // If it turns out not to be true for Spigot/Paper, our only two official platforms, this can be uncommented. // include(dependency("org.apache.logging.log4j:log4j-api")) @@ -110,12 +117,7 @@ tasks.named("shadowJar") { include(dependency("it.unimi.dsi:fastutil")) include(dependency("com.sk89q.lib:jlibnoise")) - exclude(dependency("$group:$name")) - - relocate("org.bstats", "com.sk89q.worldedit.bstats") - relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") - relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") + exclude(dependency(ownArtifact)) } project.project(":worldedit-bukkit:adapters").subprojects.forEach { dependencies { diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 21e0c7847e..926cacede4 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -97,10 +97,9 @@ tasks.named("shadowJar") { } } from(zipTree(tasks.jar.flatMap { it.archiveFile })) + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") + relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") dependencies { - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") - include(dependency("org.antlr:antlr4-runtime")) include(dependency("com.sk89q.lib:jlibnoise")) } diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index 8a38b1f6b2..f7090a0628 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -1,4 +1,3 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import java.util.jar.Attributes import java.util.jar.Manifest @@ -59,20 +58,40 @@ open class MergeManifests : DefaultTask() { } } -val fabricZipTree = zipTree( - project(":worldedit-fabric").tasks.named("shadowJar").flatMap { it.archiveFile } -) +val fabricDistribution = configurations.dependencyScope("fabricDistribution") +val fabricDistributionClasspath = configurations.resolvable("fabricDistributionClasspath") { + extendsFrom(fabricDistribution.get()) + isTransitive = false + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR)) + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.SHADOWED)) + } +} -val mergeManifests = tasks.register("mergeManifests") { - // TODO Extract forgeZipTree outside of this task when possible - val forgeZipTree = zipTree( - project(":worldedit-neoforge").tasks.named("jarJar").map { it.outputs.files.singleFile } - ) +val neoforgeDistribution = configurations.dependencyScope("neoforgeDistribution") +val neoforgeDistributionClasspath = configurations.resolvable("neoforgeDistributionClasspath") { + extendsFrom(neoforgeDistribution.get()) + isTransitive = false + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR)) + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + } +} - dependsOn( - project(":worldedit-fabric").tasks.named("shadowJar"), - project(":worldedit-neoforge").tasks.named("jarJar") - ) +dependencies { + "fabricDistribution"(project(":worldedit-fabric")) + "neoforgeDistribution"(project(":worldedit-neoforge")) +} + +val fabricZipTree = zipTree(fabricDistributionClasspath.map { it.singleFile }) +val forgeZipTree = zipTree(neoforgeDistributionClasspath.map { it.singleFile }) + +val mergeManifests = tasks.register("mergeManifests") { + dependsOn(fabricDistributionClasspath, neoforgeDistributionClasspath) inputManifests.from( fabricZipTree.matching { include("META-INF/MANIFEST.MF") }, forgeZipTree.matching { include("META-INF/MANIFEST.MF") } @@ -81,15 +100,7 @@ val mergeManifests = tasks.register("mergeManifests") { } tasks.register("jar") { - val forgeZipTree = zipTree( - project(":worldedit-neoforge").tasks.named("jarJar").map { it.outputs.files.singleFile } - ) - - dependsOn( - project(":worldedit-fabric").tasks.named("shadowJar"), - project(":worldedit-neoforge").tasks.named("jarJar"), - mergeManifests - ) + dependsOn(fabricDistributionClasspath, neoforgeDistributionClasspath, mergeManifests) from(fabricZipTree) { exclude("META-INF/MANIFEST.MF") } diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index cce1516446..d8469784e4 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -114,10 +114,9 @@ tasks.named("processResources") { tasks.named("shadowJar") { archiveClassifier = "dist-slim" + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") + relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") dependencies { - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") - include(dependency("org.antlr:antlr4-runtime")) include(dependency("org.mozilla:rhino-runtime")) include(dependency("com.sk89q.lib:jlibnoise")) diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 7d54635d41..f47b6c710a 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -91,14 +91,13 @@ configure { } tasks.named("shadowJar") { + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") + relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") + relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") dependencies { include(dependency("org.bstats:.*")) include(dependency("org.antlr:antlr4-runtime")) include(dependency("com.sk89q.lib:jlibnoise")) - - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") } } tasks.named("assemble").configure {