From 64f5f9d776ec1d92a3a64374152a6a680b0e1d06 Mon Sep 17 00:00:00 2001 From: jmp Date: Fri, 18 Dec 2020 22:09:20 -0800 Subject: [PATCH] Fix dependency relocations --- .../src/main/kotlin/ConfigureSubprojects.kt | 27 +++++++++++++++++++ buildSrc/src/main/kotlin/DependencyLoading.kt | 6 ++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/ConfigureSubprojects.kt b/buildSrc/src/main/kotlin/ConfigureSubprojects.kt index 5e9806bd4..a2e1259bc 100644 --- a/buildSrc/src/main/kotlin/ConfigureSubprojects.kt +++ b/buildSrc/src/main/kotlin/ConfigureSubprojects.kt @@ -1,6 +1,9 @@ import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer +import kotlinx.dom.elements +import kotlinx.dom.parseXml +import kotlinx.dom.search import org.gradle.api.Project import org.gradle.api.plugins.JavaLibraryPlugin import org.gradle.api.publish.PublishingExtension @@ -81,6 +84,30 @@ private fun Project.configureServerProject() { exclude("org.bukkit.craftbukkit.Main*") } relocate("net.minecraft.server", "net.minecraft.server.v${toothpick.nmsPackage}") + + // Make sure we relocate deps the same as Paper et al. + val pomFile = project.projectDir.resolve("pom.xml") + if (!pomFile.exists()) return@getting + val dom = parseXml(pomFile) + val buildSection = dom.search("build").first() + val plugins = buildSection.search("plugins").first() + plugins.elements("plugin").filter { + val artifactId = it.search("artifactId").first().textContent + artifactId == "maven-shade-plugin" + }.forEach { + it.search("executions").first() + .search("execution").first() + .search("configuration").first() + .search("relocations").first() + .elements("relocation").forEach { relocation -> + val pattern = relocation.search("pattern").first().textContent + val shadedPattern = relocation.search("shadedPattern").first().textContent + if (pattern != "org.bukkit.craftbukkit" && pattern != "net.minecraft.server") { // We handle these ourselves above + logger.debug("Imported relocation to server project shadowJar from ${pomFile.absolutePath}: $pattern to $shadedPattern") + relocate(pattern, shadedPattern) + } + } + } } tasks.getByName("build") { dependsOn(shadowJar) diff --git a/buildSrc/src/main/kotlin/DependencyLoading.kt b/buildSrc/src/main/kotlin/DependencyLoading.kt index 828fcebc1..8e7626b37 100644 --- a/buildSrc/src/main/kotlin/DependencyLoading.kt +++ b/buildSrc/src/main/kotlin/DependencyLoading.kt @@ -29,9 +29,9 @@ fun DependencyHandlerScope.loadDependencies(project: Project) { // Load dependencies dependenciesBlock.elements("dependency").forEach { dependencyElem -> - val groupId = dependencyElem.search("groupId").firstOrNull()!!.textContent - val artifactId = dependencyElem.search("artifactId").firstOrNull()!!.textContent - val version = dependencyElem.search("version").firstOrNull()!!.textContent.applyReplacements( + val groupId = dependencyElem.search("groupId").first().textContent + val artifactId = dependencyElem.search("artifactId").first().textContent + val version = dependencyElem.search("version").first().textContent.applyReplacements( mapOf( "project.version" to "${project.toothpick.minecraftVersion}-${project.toothpick.nmsRevision}", "minecraft.version" to project.toothpick.minecraftVersion