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:
@@ -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 ""
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user