saltatory/build.gradle

73 lines
3 KiB
Groovy
Raw Normal View History

plugins {
id 'base'
id 'net.neoforged.gradle.userdev' version '7.1.39' apply false
}
subprojects { mod ->
apply plugin: 'java-library'
apply plugin: 'checkstyle'
apply plugin: 'net.neoforged.gradle.userdev'
group = 'dev.quorate'
java {
toolchain.languageVersion = JavaLanguageVersion.of(25)
withSourcesJar()
}
repositories { mavenCentral() }
configurations { javafmt }
dependencies {
implementation 'net.neoforged:neoforge:21.1.250'
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.11.4'
javafmt('com.google.googlejavaformat:google-java-format:1.37.0:all-deps') { transitive = false }
}
checkstyle {
toolVersion = '14.3.0'
configFile = rootProject.file('quality.xml')
}
def javaSources = fileTree('src') { include '**/*.java' }
['format': ['--replace'], 'formatCheck': ['--dry-run', '--set-exit-if-changed']].each { name, mode ->
tasks.register(name, JavaExec) {
inputs.files(javaSources).skipWhenEmpty()
javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(25) }
classpath = configurations.javafmt
mainClass = 'com.google.googlejavaformat.java.Main'
jvmArgs = ['api', 'code', 'file', 'parser', 'tree', 'util'].collect {
"--add-exports=jdk.compiler/com.sun.tools.javac.${it}=ALL-UNNAMED"
}
doFirst { args = ['--aosp'] + mode + javaSources.files.sort().collect { it.path } }
}
}
tasks.named('formatCheck') { mustRunAfter 'format' }
tasks.withType(Checkstyle).configureEach { mustRunAfter 'format' }
tasks.register('quality') { dependsOn 'formatCheck', 'checkstyleMain', 'checkstyleTest' }
tasks.named('check') { dependsOn 'quality' }
tasks.named('test') {
dependsOn 'quality'
useJUnitPlatform()
maxHeapSize = '512m'
jvmArgs '-XX:+UseZGC'
}
tasks.named('processResources') {
inputs.property 'version', provider { mod.version.toString() }
filesMatching('META-INF/neoforge.mods.toml') { expand version: mod.version.toString() }
}
tasks.withType(JavaCompile).matching { it.name in ['compileJava', 'compileTestJava', 'compileProbeJava'] }.configureEach {
options.encoding = 'UTF-8'
options.compilerArgs += ['-Xlint:all', '-Werror', '-proc:none']
mustRunAfter 'format'
}
tasks.withType(Jar).configureEach {
preserveFileTimestamps = false
reproducibleFileOrder = true
from(['LICENSE.md', 'COPYING', 'COPYING.LESSER', 'NOTICE.md'].collect { rootProject.file(it) }) { into 'META-INF' }
}
}
['format', 'formatCheck', 'quality'].each { name ->
tasks.register(name) { dependsOn subprojects.collect { it.tasks.named(name) } }
}
['assemble', 'check'].each { name ->
tasks.named(name) { dependsOn subprojects.collect { it.tasks.named(name) } }
}