Files
GTNHLib/build.gradle.kts
T

99 lines
3.2 KiB
Kotlin

plugins {
id("com.gtnewhorizons.gtnhconvention")
id("me.champeau.jmh") version "0.7.3"
}
minecraft {
//extraRunJvmArguments.add("-Dgtnhlib.dumpClass=true")
//extraRunJvmArguments.addAll("-Dlegacy.debugClassLoading=true", "-Dlegacy.debugClassLoadingFiner=true", "-Dlegacy.debugClassLoadingSave=true")
}
// Add a Java 17 sourceset for including code optimized for newer Java versions
val java17ToolchainSpec: JavaToolchainSpec.() -> Unit = {
// Use a Java 21 compiler with a target of 17
languageVersion = JavaLanguageVersion.of(21)
}
val main17 by sourceSets.creating {
compileClasspath = files(compileClasspath, configurations.lwjgl3Classpath.get(), sourceSets.main.get().compileClasspath.filter({ f -> !f.toString().contains("jabel-javac") }), sourceSets.main.get().output)
runtimeClasspath = files(runtimeClasspath, configurations.lwjgl3Classpath.get(), sourceSets.main.get().runtimeClasspath, sourceSets.main.get().output)
}
tasks.named<JavaCompile>(main17.compileJavaTaskName).configure {
javaCompiler = javaToolchains.compilerFor(java17ToolchainSpec)
options.release = 17
sourceCompatibility = JavaVersion.VERSION_17.majorVersion
targetCompatibility = JavaVersion.VERSION_17.majorVersion
}
tasks.jar.configure {
dependsOn(main17.compileJavaTaskName)
into("META-INF/versions/17") { from(main17.output) }
}
tasks.jar {
manifest {
attributes["MixinConfigs"] = "mixins.gtnhlib.preinit.json"
}
}
tasks.sourcesJar.configure {
into("META-INF/versions/17") { from(main17.java.sourceDirectories) }
}
tasks.processResources {
val projectVersion = project.version.toString()
inputs.property("version", projectVersion)
filesMatching("META-INF/rfb-plugin/*") {
expand("version" to projectVersion)
}
// Embed the FalsePatternLib DepLoader bootstrap jar for the static-block bootstrap.
from(configurations["deploader"]) {
rename { "fplib_deploader.jar" }
}
}
tasks.test {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}
// On macOS ARM64, use an ARM64-compatible JVM for tests
val isMacOsArm64 = System.getProperty("os.name").lowercase().contains("mac") &&
System.getProperty("os.arch") == "aarch64"
javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(8)
if (isMacOsArm64) {
vendor = JvmVendorSpec.AZUL
}
}
dependsOn(tasks.extractNatives2)
jvmArgs("-Djava.library.path=${tasks.extractNatives2.get().destinationFolder.asFile.get().path}")
}
tasks.shadowJar {
into("META-INF/versions/17") {
from(main17.output)
}
exclude("META-INF/versions/9/module-info.class")
}
for (jarTask in listOf(tasks.jar, tasks.shadowJar, tasks.sourcesJar)) {
jarTask.configure {
manifest {
attributes("Multi-Release" to true)
}
}
}
sourceSets {
named("jmh") {
compileClasspath += sourceSets["patchedMc"].output
runtimeClasspath = files(main17.output) + runtimeClasspath + files(sourceSets["patchedMc"].output)
}
}
dependencies {
add("jmhRuntimeOnly", files(sourceSets["patchedMc"].output))
}
tasks.named<me.champeau.jmh.JMHTask>("jmh") {
dependsOn(main17.compileJavaTaskName)
}