Files
ForgeMultipart/build.gradle
T

53 lines
2.3 KiB
Groovy

//version: 1707058017
plugins {
id 'com.gtnewhorizons.gtnhconvention'
}
tasks.test {
useJUnitPlatform()
}
// Scope modern syntax to these helpers; retained Scala and joint Java stay on Java 8.
apply plugin: xyz.wagyourtail.jvmdg.gradle.JVMDowngraderPlugin
def modernJavaSources = sourceSets.main.scala.matching {
include 'codechicken/multipart/asm/StackAnalyserLogic.java'
include 'codechicken/multipart/asm/JavaTraitRegistration.java'
include 'codechicken/multipart/asm/ClassInfoLookup.java'
}
def legacyScala = tasks.named('compileScala') {
// Zinc does not invalidate joint-compiled Java annotations when Tags.VERSION changes.
scalaCompileOptions.force = true
// Scalac reads the Java declaration without asking Java 8 javac to compile its body.
exclude 'codechicken/multipart/asm/StackAnalyserLogic.java'
exclude 'codechicken/multipart/asm/JavaTraitRegistration.java'
exclude 'codechicken/multipart/asm/ClassInfoLookup.java'
scalaCompileOptions.additionalParameters = ['-sourcepath', file('src/main/scala').absolutePath]
inputs.files(modernJavaSources).withPropertyName('modernJavaDeclarations').withPathSensitivity(PathSensitivity.RELATIVE)
}
def compileModernJava = tasks.register('compileModernJava', JavaCompile) {
source(modernJavaSources)
classpath = sourceSets.main.compileClasspath + files(
tasks.named('compileJava').flatMap { it.destinationDirectory },
legacyScala.flatMap { it.destinationDirectory })
destinationDirectory = layout.buildDirectory.dir('classes/java/modern')
javaCompiler = javaToolchains.compilerFor { languageVersion = JavaLanguageVersion.of(25) }
options.release = 21
options.encoding = 'UTF-8'
}
def downgradeModernJava = tasks.register('downgradeModernJava', xyz.wagyourtail.jvmdg.gradle.task.files.DowngradeFiles) {
inputCollection = files(compileModernJava.flatMap { it.destinationDirectory })
classpath = compileModernJava.get().classpath
downgradeTo = JavaVersion.VERSION_1_8
multiReleaseOriginal = false
multiReleaseVersions = [] as Set
// The bundled plugin otherwise declares outputs only when inputs already exist.
outputs.dirs(outputMap.values())
}
sourceSets.main.output.classesDirs.from(downgradeModernJava.map { it.outputCollection })
tasks.named('classes') { dependsOn(downgradeModernJava) }