d9699b5935
A recent patch moved the internal unit tests to mokito, allowing deep mocking to easily setup a mocked server instance. While this change is useful, the server's Server#getItemFactory methods is one of the hottest paths during unit testing, being called numerous times by material tests. As mokito mocks keep track of each invocation to allow for verifications of invocations down the line, the server mock allocates a huge amount of memory to keep track of all invocations, ultimately leading to an OOM exception. The previous solution solved this by increasing the tests memory to 2 GB, however as of right now simply configuring the server mock as "stubOnly", properly prevents the overflow of invocation records as none of the unit test code relies on invocation verification.
149 lines
4 KiB
Text
149 lines
4 KiB
Text
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
|
|
|
plugins {
|
|
java
|
|
`maven-publish`
|
|
id("com.github.johnrengelman.shadow") version "7.1.2" apply false
|
|
id("io.papermc.paperweight.core") version "1.5.1"
|
|
}
|
|
|
|
allprojects {
|
|
apply(plugin = "java")
|
|
apply(plugin = "maven-publish")
|
|
|
|
java {
|
|
toolchain {
|
|
languageVersion.set(JavaLanguageVersion.of(17))
|
|
}
|
|
}
|
|
}
|
|
|
|
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
|
|
|
subprojects {
|
|
tasks.withType<JavaCompile> {
|
|
options.encoding = Charsets.UTF_8.name()
|
|
options.release.set(17)
|
|
}
|
|
tasks.withType<Javadoc> {
|
|
options.encoding = Charsets.UTF_8.name()
|
|
}
|
|
tasks.withType<ProcessResources> {
|
|
filteringCharset = Charsets.UTF_8.name()
|
|
}
|
|
tasks.withType<Test> {
|
|
testLogging {
|
|
showStackTraces = true
|
|
exceptionFormat = TestExceptionFormat.FULL
|
|
events(TestLogEvent.STANDARD_OUT)
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven(paperMavenPublicUrl)
|
|
}
|
|
}
|
|
|
|
val spigotDecompiler: Configuration by configurations.creating
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven(paperMavenPublicUrl) {
|
|
content {
|
|
onlyForConfigurations(
|
|
configurations.paperclip.name,
|
|
spigotDecompiler.name,
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
paramMappings("net.fabricmc:yarn:1.19.3+build.1:mergedv2")
|
|
remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
|
|
decompiler("net.minecraftforge:forgeflower:2.0.605.1")
|
|
spigotDecompiler("io.papermc:patched-spigot-fernflower:0.1+build.6")
|
|
paperclip("io.papermc:paperclip:3.0.2")
|
|
}
|
|
|
|
paperweight {
|
|
minecraftVersion.set(providers.gradleProperty("mcVersion"))
|
|
serverProject.set(project(":paper-server"))
|
|
|
|
paramMappingsRepo.set(paperMavenPublicUrl)
|
|
remapRepo.set(paperMavenPublicUrl)
|
|
decompileRepo.set(paperMavenPublicUrl)
|
|
|
|
craftBukkit {
|
|
fernFlowerJar.set(layout.file(spigotDecompiler.elements.map { it.single().asFile }))
|
|
}
|
|
|
|
paper {
|
|
spigotApiPatchDir.set(layout.projectDirectory.dir("patches/api"))
|
|
spigotServerPatchDir.set(layout.projectDirectory.dir("patches/server"))
|
|
|
|
mappingsPatch.set(layout.projectDirectory.file("build-data/mappings-patch.tiny"))
|
|
reobfMappingsPatch.set(layout.projectDirectory.file("build-data/reobf-mappings-patch.tiny"))
|
|
|
|
reobfPackagesToFix.addAll(
|
|
"co.aikar.timings",
|
|
"com.destroystokyo.paper",
|
|
"com.mojang",
|
|
"io.papermc.paper",
|
|
"ca.spottedleaf",
|
|
"net.kyori.adventure.bossbar",
|
|
"net.minecraft",
|
|
"org.bukkit.craftbukkit",
|
|
"org.spigotmc",
|
|
)
|
|
}
|
|
}
|
|
|
|
tasks.generateDevelopmentBundle {
|
|
apiCoordinates.set("io.papermc.paper:paper-api")
|
|
mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi")
|
|
libraryRepositories.addAll(
|
|
"https://repo.maven.apache.org/maven2/",
|
|
paperMavenPublicUrl,
|
|
)
|
|
}
|
|
|
|
publishing {
|
|
if (project.providers.gradleProperty("publishDevBundle").isPresent) {
|
|
publications.create<MavenPublication>("devBundle") {
|
|
artifact(tasks.generateDevelopmentBundle) {
|
|
artifactId = "dev-bundle"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
publishing {
|
|
repositories {
|
|
maven("https://repo.papermc.io/repository/maven-snapshots/") {
|
|
name = "paperSnapshots"
|
|
credentials(PasswordCredentials::class)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.collectAtsFromPatches {
|
|
// Uncomment while updating for a new Minecraft version
|
|
//extraPatchDir.set(layout.projectDirectory.dir("patches/unapplied/server"))
|
|
}
|
|
|
|
tasks.register("printMinecraftVersion") {
|
|
doLast {
|
|
println(providers.gradleProperty("mcVersion").get().trim())
|
|
}
|
|
}
|
|
|
|
tasks.register("printPaperVersion") {
|
|
doLast {
|
|
println(project.version)
|
|
}
|
|
}
|