1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-19 14:59:20 +00:00

Added metrics and fixed relocations not applying for child projects

This commit is contained in:
Tim203
2022-03-21 14:41:53 +01:00
parent 440e20f5ea
commit 465e66df72
22 changed files with 406 additions and 48 deletions

View File

@@ -23,11 +23,9 @@
* @link https://github.com/GeyserMC/Floodgate
*/
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import net.kyori.indra.git.IndraGitExtension
import org.gradle.api.Project
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.kotlin.dsl.named
import org.gradle.kotlin.dsl.the
fun Project.isSnapshot(): Boolean =
@@ -54,13 +52,8 @@ fun Project.buildNumber(): Int =
fun Project.buildNumberAsString(): String =
buildNumber().takeIf { it != -1 }?.toString() ?: "??"
fun Project.relocate(pattern: String) {
tasks.named<ShadowJar>("shadowJar") {
relocate(pattern, "org.geysermc.floodgate.shaded.$pattern")
}
}
val providedDependencies = mutableMapOf<String, MutableSet<String>>()
val relocatedPackages = mutableMapOf<String, MutableSet<String>>()
fun Project.provided(pattern: String, name: String, version: String, excludedOn: Int = 0b110) {
providedDependencies.getOrPut(project.name) { mutableSetOf() }
@@ -73,5 +66,10 @@ fun Project.provided(pattern: String, name: String, version: String, excludedOn:
fun Project.provided(dependency: ProjectDependency) =
provided(dependency.group!!, dependency.name, dependency.version!!)
fun Project.relocate(pattern: String) =
relocatedPackages.getOrPut(project.name) { mutableSetOf() }
.add(pattern)
private fun calcExclusion(section: String, bit: Int, excludedOn: Int): String =
if (excludedOn and bit > 0) section else ""

View File

@@ -24,9 +24,31 @@ tasks {
exclude(dependency(string))
}
}
// relocations made in included project dependencies are for whatever reason not
// forwarded to the project implementing the dependency.
// (e.g. a relocation in `core` will relocate for core. But when you include `core` in
// for example Velocity, the relocation will be gone for Velocity)
addRelocations(project, sJar)
}
}
named("build") {
dependsOn(shadowJar)
}
}
}
fun addRelocations(project: Project, shadowJar: ShadowJar) {
callAddRelocations(project.configurations.api.get(), shadowJar)
callAddRelocations(project.configurations.implementation.get(), shadowJar)
relocatedPackages[project.name]?.forEach { pattern ->
println("Relocating $pattern for ${shadowJar.project.name}")
shadowJar.relocate(pattern, "org.geysermc.floodgate.shadow.$pattern")
}
}
fun callAddRelocations(configuration: Configuration, shadowJar: ShadowJar) =
configuration.dependencies.forEach {
if (it is ProjectDependency)
addRelocations(it.dependencyProject, shadowJar)
}