From c5ad912a792365a6339fe429a076598221c8c5d5 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sat, 17 Feb 2018 11:23:50 +0100 Subject: [PATCH] Relocate shaded libs --- versions/common.gradle | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/versions/common.gradle b/versions/common.gradle index f8aaa4c8..719ea615 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -97,17 +97,40 @@ if (project.name != 'core') { minecraft.accessTransformer preprocessedRes + '/META-INF/replaymod_at.cfg' } + +def shade = {files( + configurations.compile.findAll {it.name.startsWith 'mixin-'} + + configurations.shade +)} +task configureRelocation() { + dependsOn tasks.jar + doLast { + def extraSrg = tasks.reobfJar.extraSrgLines + shade().filter { it.exists() }.collect { + def tree = it.isDirectory() ? fileTree(it) : zipTree(it) + def pkgs = [].toSet() + tree.visit { file -> + if (!file.directory && file.name.endsWith('.class')) { + def pkg = file.path.substring(0, file.path.lastIndexOf('/')) + if (!pkg.startsWith('com/replaymod')) { + pkgs << pkg + } + } + } + pkgs + }.flatten().unique().each { pkg -> + extraSrg << "PK: $pkg com/replaymod/lib/$pkg".toString() + } + } +} +tasks.reobfJar.dependsOn configureRelocation + jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE dependsOn configurations.compile dependsOn configurations.shade - def shade = {files( - configurations.compile.findAll {it.name.startsWith 'mixin-'} - + configurations.shade - )} - def noticeDir = file("$buildDir/NOTICE") doFirst { noticeDir.deleteDir()