Fix proguard errors by remapping the shrinked .jar files
This commit is contained in:
parent
772e665904
commit
a4802088ea
115
build.gradle.kts
115
build.gradle.kts
|
@ -33,15 +33,52 @@ subprojects {
|
|||
group = rootProject.group.toString()
|
||||
lateinit var mappingsDep: Dependency
|
||||
apply(plugin = "dev.architectury.loom")
|
||||
extensions.configure<net.fabricmc.loom.LoomGradleExtension>("loom") {
|
||||
mappingsDep = officialMojangMappings()
|
||||
silentMojangMappingsLicense()
|
||||
mixinConfig("snowygui-mixins.json")
|
||||
refmapName = "snowygui-common-refmap.json"
|
||||
}
|
||||
apply(plugin = "com.github.johnrengelman.shadow")
|
||||
val shadowC by configurations.creating
|
||||
repositories { maven(url = "https://jitpack.io"); mavenCentral() }
|
||||
dependencies {
|
||||
implementation("$kotlinX:kotlinx-coroutines-core:1.5.0-RC")
|
||||
listOf(
|
||||
"$kotlinX:kotlinx-datetime:0.2.0",
|
||||
"com.typesafe:config:1.4.1",
|
||||
"io.github.config4k:config4k:0.4.2",
|
||||
"org.jetbrains:annotations:20.1.0"
|
||||
).forEach { implementation(it); shadowC(it) { isTransitive = false; } }
|
||||
"minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}")
|
||||
"mappings"(mappingsDep)
|
||||
}
|
||||
tasks {
|
||||
withType(ShadowJar::class) { this.configurations = listOf(shadowC) }
|
||||
apply(plugin = "net.kyori.indra.git")
|
||||
withType(Jar::class) {
|
||||
from("$rootDir/LICENSE.txt")
|
||||
indraGit.applyVcsInformationToManifest(manifest)
|
||||
archiveBaseName.set("${rootProject.name}-${rootProject.version}")
|
||||
}
|
||||
withType(ShadowJar::class) {
|
||||
this.configurations = listOf(shadowC)
|
||||
relocate("kotlinx.datetime", "${rootProject.group}.datetime")
|
||||
relocate("org.jetbrains", "${rootProject.group}.jetbrainslibs")
|
||||
relocate("javassist", "${rootProject.group}.javassist")
|
||||
relocate("org.reflections8", "${rootProject.group}.reflectionlib")
|
||||
relocate("com.typesafe.config", "${rootProject.group}.typesafe.config")
|
||||
relocate("io.github.config4k", "${rootProject.group}.config4k")
|
||||
relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc")
|
||||
exclude("**/*.kotlin_metadata")
|
||||
exclude("**/*.kotlin_builtins")
|
||||
exclude("META-INF/maven/**/*")
|
||||
archiveClassifier.set("shadow")
|
||||
}
|
||||
val shadowJar = getByName("shadowJar") as ShadowJar
|
||||
val shrinkJar = register("shrinkJar", proguard.gradle.ProGuardTask::class) { group = this@subprojects.group as String
|
||||
val dictionariesDir = "$rootDir/obfuscation"
|
||||
val remapJar = this@tasks.getByName("remapJar")
|
||||
injars(remapJar)
|
||||
outjars("$rootDir/shrinkedJars/${remapJar.outputs.files.singleFile.name}")
|
||||
injars(shadowJar)
|
||||
outjars("$rootDir/shrinkedJars/${shadowJar.outputs.files.singleFile.name}")
|
||||
keep("class $group.snowygui.mixins.* { * ; }")
|
||||
keep("class $group.snowygui.fabric.**")
|
||||
keep("class $group.snowygui.forge.**")
|
||||
|
@ -56,7 +93,6 @@ subprojects {
|
|||
allowaccessmodification()
|
||||
adaptclassstrings()
|
||||
"$group.**".also { dontnote(it); dontwarn(it) }
|
||||
dontwarn("net.minecraft.**"); dontwarn("com.mojang.**")
|
||||
|
||||
// kotlinx-serialization related configuration:
|
||||
dontnote("kotlinx.serialization.AnnotationsKt")
|
||||
|
@ -66,9 +102,11 @@ subprojects {
|
|||
keepclasseswithmembers("class $group.snowygui.** { kotlinx.serialization.KSerializer serializer(...); }")
|
||||
|
||||
val homeDir = System.getProperty("java.home") as String
|
||||
libraryjars(configurations.runtimeClasspath.get().filterNot { file ->
|
||||
shadowC.contains(file)
|
||||
})
|
||||
doFirst {
|
||||
libraryjars(configurations.runtimeClasspath.get().filterNot { file ->
|
||||
shadowC.contains(file)
|
||||
})
|
||||
}
|
||||
if (JavaVersion.current().isJava9Compatible) {
|
||||
val jmodsLocations = setOf(
|
||||
"$homeDir/jmods/java.base.jmod",
|
||||
|
@ -86,25 +124,14 @@ subprojects {
|
|||
overloadaggressively()
|
||||
mergeinterfacesaggressively()
|
||||
}
|
||||
if (this@subprojects.name != "common") build.get().finalizedBy(shrinkJar)
|
||||
}
|
||||
extensions.configure<net.fabricmc.loom.LoomGradleExtension>("loom") {
|
||||
mappingsDep = officialMojangMappings()
|
||||
silentMojangMappingsLicense()
|
||||
mixinConfig("snowygui-mixins.json")
|
||||
refmapName = "snowygui-common-refmap.json"
|
||||
}
|
||||
repositories { maven(url = "https://jitpack.io") }
|
||||
dependencies {
|
||||
implementation("$kotlinX:kotlinx-coroutines-core:1.5.0-RC")
|
||||
listOf(
|
||||
"$kotlinX:kotlinx-datetime:0.2.0",
|
||||
"com.typesafe:config:1.4.1",
|
||||
"io.github.config4k:config4k:0.4.2",
|
||||
"org.jetbrains:annotations:20.1.0"
|
||||
).forEach { implementation(it); shadowC(it) { isTransitive = false; } }
|
||||
"minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}")
|
||||
"mappings"(mappingsDep)
|
||||
withType(net.fabricmc.loom.task.RemapJarTask::class) {
|
||||
dependsOn(shrinkJar)
|
||||
val shrinkedJar = shrinkJar.get().outJarFileCollection.singleFile
|
||||
archiveBaseName.set(shadowJar.archiveBaseName)
|
||||
archiveClassifier.set(this@subprojects.name)
|
||||
input.set(shrinkedJar)
|
||||
if (!archiveFileName.get().contains("common")) destinationDirectory.set(file("$rootDir/remappedJars"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,25 +170,6 @@ allprojects {
|
|||
}
|
||||
}
|
||||
tasks {
|
||||
withType(ShadowJar::class) {
|
||||
relocate("kotlinx.datetime", "${rootProject.group}.datetime")
|
||||
relocate("org.jetbrains", "${rootProject.group}.jetbrainslibs")
|
||||
relocate("javassist", "${rootProject.group}.javassist")
|
||||
relocate("org.reflections8", "${rootProject.group}.reflectionlib")
|
||||
relocate("com.typesafe.config", "${rootProject.group}.typesafe.config")
|
||||
relocate("io.github.config4k", "${rootProject.group}.config4k")
|
||||
relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc")
|
||||
exclude("**/*.kotlin_metadata")
|
||||
exclude("**/*.kotlin_builtins")
|
||||
exclude("META-INF/maven/**/*")
|
||||
archiveClassifier.set("shadow")
|
||||
}
|
||||
apply(plugin = "net.kyori.indra.git")
|
||||
withType(Jar::class) {
|
||||
from("$rootDir/LICENSE.txt")
|
||||
indraGit.applyVcsInformationToManifest(manifest)
|
||||
archiveBaseName.set("${rootProject.name}-${rootProject.version}")
|
||||
}
|
||||
withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class) {
|
||||
with(kotlinOptions) {
|
||||
freeCompilerArgs = listOf("-Xjvm-default=all", "-Xlambdas=indy")
|
||||
|
@ -182,14 +190,6 @@ allprojects {
|
|||
compilerArgs.addAll(listOf("-Xplugin:jabel", "--release", javaVer))
|
||||
}
|
||||
}
|
||||
withType(net.fabricmc.loom.task.RemapJarTask::class) {
|
||||
val shadowTask = getByName("shadowJar") as ShadowJar
|
||||
dependsOn(shadowTask)
|
||||
archiveBaseName.set(shadowTask.archiveBaseName)
|
||||
input.set(shadowTask.archiveFile)
|
||||
archiveClassifier.set(this@allprojects.name)
|
||||
if (!archiveFileName.get().contains("common")) destinationDirectory.set(file("$rootDir/remappedJars"))
|
||||
}
|
||||
withType(ProcessResources::class) {
|
||||
with(project(":common").sourceSets.main.get().resources.srcDirs) {
|
||||
if (!sourceSets.main.get().resources.srcDirs.containsAll(this)) {
|
||||
|
@ -218,10 +218,7 @@ allprojects {
|
|||
}
|
||||
|
||||
tasks {
|
||||
listOf(
|
||||
file("remappedJars"),
|
||||
file("shrinkedJars")
|
||||
).forEach { if (it.exists()) clean.get().delete.add(it) }
|
||||
file("remappedJars").let { if (it.exists()) clean.get().delete.add(it) }
|
||||
val publishToModrinth = register<com.modrinth.minotaur.TaskModrinthUpload>("publishtoModrinth") {
|
||||
val envStr: String? = System.getenv("MODRINTH")
|
||||
onlyIf { envStr != null }
|
||||
|
@ -233,7 +230,7 @@ tasks {
|
|||
versionType = VersionType.ALPHA
|
||||
detectLoaders = false
|
||||
versionName = "${project.name} $versionNumber for Minecraft $gameVersions and higher"
|
||||
fileTree("$rootDir/shrinkedJars/").files.forEach {
|
||||
fileTree("$rootDir/remappedJars/").files.forEach {
|
||||
with(it.name) {
|
||||
when {
|
||||
contains("fabric") -> uploadFile = it
|
||||
|
|
Loading…
Reference in New Issue