mirror of
https://github.com/GeyserMC/Floodgate.git
synced 2025-12-19 14:59:20 +00:00
Re-added relocations and excluded provided dependencies
This commit is contained in:
28
build-logic/src/main/kotlin/extensions.kt
Normal file
28
build-logic/src/main/kotlin/extensions.kt
Normal file
@@ -0,0 +1,28 @@
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.gradle.kotlin.dsl.named
|
||||
|
||||
fun Project.relocate(pattern: String) {
|
||||
tasks.named<ShadowJar>("shadowJar") {
|
||||
relocate(pattern, "org.geysermc.floodgate.shaded.$pattern")
|
||||
}
|
||||
}
|
||||
|
||||
val providedDependencies = mutableMapOf<String, MutableSet<String>>()
|
||||
|
||||
fun Project.provided(pattern: String, name: String, version: String, excludedOn: Int = 0b110) {
|
||||
providedDependencies.getOrPut(project.name) { mutableSetOf() }
|
||||
.add("${calcExclusion(pattern, 0b100, excludedOn)}:" +
|
||||
"${calcExclusion(name, 0b10, excludedOn)}:" +
|
||||
calcExclusion(version, 0b1, excludedOn))
|
||||
dependencies.add("compileOnlyApi", "$pattern:$name:$version")
|
||||
}
|
||||
|
||||
fun Project.provided(dependency: ProjectDependency) {
|
||||
provided(dependency.group!!, dependency.name, dependency.version!!)
|
||||
}
|
||||
|
||||
private fun calcExclusion(section: String, bit: Int, excludedOn: Int): String {
|
||||
return if (excludedOn and bit > 0) section else ""
|
||||
}
|
||||
@@ -4,6 +4,10 @@ plugins {
|
||||
// id("net.ltgt.errorprone")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.checkerframework", "checker-qual", Versions.checkerQual)
|
||||
}
|
||||
|
||||
tasks {
|
||||
processResources {
|
||||
filesMatching(listOf("plugin.yml", "bungee.yml", "velocity-plugin.json")) {
|
||||
|
||||
@@ -15,17 +15,23 @@ tasks {
|
||||
archiveBaseName.set("floodgate-${project.name}")
|
||||
archiveVersion.set("")
|
||||
archiveClassifier.set("")
|
||||
configureRelocations()
|
||||
|
||||
val sJar: ShadowJar = this
|
||||
|
||||
doFirst {
|
||||
providedDependencies[project.name]?.forEach { string ->
|
||||
sJar.dependencies {
|
||||
println("Excluding $string from ${project.name}")
|
||||
exclude(dependency(string))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
named("build") {
|
||||
dependsOn(shadowJar)
|
||||
}
|
||||
}
|
||||
|
||||
fun ShadowJar.configureRelocations() {
|
||||
//todo platform-independent relocations
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications.named<MavenPublication>("mavenJava") {
|
||||
artifact(tasks["shadowJar"])
|
||||
|
||||
Reference in New Issue
Block a user