2021-02-17 17:50:47 +01:00
|
|
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
2021-02-18 06:32:43 +01:00
|
|
|
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin
|
|
|
|
import org.gradle.api.Project
|
|
|
|
import org.gradle.kotlin.dsl.apply
|
|
|
|
import org.gradle.kotlin.dsl.invoke
|
|
|
|
import org.gradle.kotlin.dsl.withType
|
|
|
|
import java.io.ByteArrayOutputStream
|
2021-02-17 17:50:47 +01:00
|
|
|
|
2021-02-18 06:32:43 +01:00
|
|
|
fun Project.configureShadowJar() {
|
|
|
|
apply<ShadowPlugin>()
|
|
|
|
tasks {
|
|
|
|
withType<ShadowJar> {
|
|
|
|
archiveClassifier.set("")
|
2021-02-18 10:15:43 +01:00
|
|
|
archiveFileName.set("ViaVersion-${project.name.substringAfter("viaversion-").capitalize()}-${project.version}.jar")
|
2021-02-18 06:32:43 +01:00
|
|
|
destinationDirectory.set(rootProject.projectDir.resolve("build/libs"))
|
|
|
|
//minimize() // ?
|
|
|
|
configureRelocations()
|
|
|
|
configureExcludes()
|
|
|
|
}
|
|
|
|
getByName("build") {
|
|
|
|
dependsOn(withType<ShadowJar>())
|
|
|
|
}
|
2021-02-17 17:50:47 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-02-18 06:32:43 +01:00
|
|
|
private fun ShadowJar.configureRelocations() {
|
|
|
|
relocate("javassist", "us.myles.viaversion.libs.javassist")
|
|
|
|
relocate("com.google.gson", "us.myles.viaversion.libs.gson")
|
|
|
|
relocate("com.github.steveice10.opennbt", "us.myles.viaversion.libs.opennbt")
|
|
|
|
relocate("net.md_5.bungee", "us.myles.viaversion.libs.bungeecordchat")
|
|
|
|
relocate("it.unimi.dsi.fastutil", "us.myles.viaversion.libs.fastutil")
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun ShadowJar.configureExcludes() {
|
|
|
|
// bungee api
|
|
|
|
/*
|
|
|
|
include("net.md_5.bungee.api.chat.*")
|
|
|
|
include("net.md_5.bungee.api.ChatColor")
|
|
|
|
include("net.md_5.bungee.api.ChatMessageType")
|
|
|
|
include("net.md_5.bungee.chat.*")
|
|
|
|
*/
|
|
|
|
|
|
|
|
// fastutil
|
|
|
|
|
|
|
|
// We only want int and Object maps
|
|
|
|
/*
|
|
|
|
include("it.unimi.dsi.fastutil.ints.*")
|
|
|
|
include("it.unimi.dsi.fastutil.objects.*")
|
|
|
|
include("it.unimi.dsi.fastutil.*.class")
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Object types
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Reference*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Boolean*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Byte*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Short*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Float*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Double*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Long*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Char*")
|
|
|
|
// Map types
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Custom*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Linked*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Sorted*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Tree*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Heap*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Queue*")
|
|
|
|
// Crossing fingers
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Big*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Synchronized*")
|
|
|
|
exclude("it/unimi/dsi/fastutil/*/*Unmodifiable*")
|
2021-02-18 10:15:43 +01:00
|
|
|
exclude("it/unimi/dsi/fastutil/io/*")
|
2021-02-18 06:32:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
fun Project.latestCommitHash(): String {
|
|
|
|
val byteOut = ByteArrayOutputStream()
|
|
|
|
exec {
|
|
|
|
commandLine = listOf("git", "rev-parse", "--short", "HEAD")
|
|
|
|
standardOutput = byteOut
|
2021-02-17 17:50:47 +01:00
|
|
|
}
|
2021-02-18 06:32:43 +01:00
|
|
|
return byteOut.toString(Charsets.UTF_8.name()).trim()
|
2021-02-17 17:50:47 +01:00
|
|
|
}
|