saltatory/build.gradle

140 lines
4.9 KiB
Groovy

plugins {
id 'java-library'
id 'checkstyle'
id 'net.neoforged.gradle.userdev' version '7.1.39'
}
group = 'dev.quorate'
version = '0.42.1'
def modVersion = version.toString()
java {
toolchain.languageVersion = JavaLanguageVersion.of(25)
withSourcesJar()
}
repositories {
ivy {
url = 'https://github.com/tlaplus/tlaplus/releases/download'
patternLayout { artifact '[revision]/[artifact].[ext]' }
metadataSources { artifact() }
content { includeModule 'org.lamport', 'tla2tools' }
}
mavenCentral()
maven {
url = 'https://maven.blamejared.com/'
content { includeGroup 'com.hrznstudio' }
}
maven {
url = 'https://modmaven.dev/'
content { includeGroup 'mekanism' }
}
maven {
url = 'https://www.cursemaven.com'
content { includeGroup 'curse.maven' }
}
maven {
url = 'https://api.modrinth.com/maven'
content { includeGroup 'maven.modrinth' }
}
}
sourceSets {
probe {
compileClasspath += sourceSets.main.output + configurations.compileClasspath
}
}
configurations { javafmt }
dependencies {
implementation 'net.neoforged:neoforge:21.1.250'
compileOnly('mekanism:Mekanism:1.21.1-10.7.19.85') { transitive = false }
compileOnly('curse.maven:functional-storage-556861:8459097') { transitive = false }
compileOnly('maven.modrinth:refined-storage:lHHiI26k') { transitive = false }
compileOnly 'org.jetbrains:annotations:24.1.0'
compileOnly 'org.apiguardian:apiguardian-api:1.1.2'
compileOnly 'io.github.llamalad7:mixinextras-neoforge:0.5.3'
probeCompileOnly('com.hrznstudio:titanium:1.21-4.0.43') { transitive = false }
testImplementation 'it.unimi.dsi:fastutil:8.5.12'
testImplementation('org.lamport:tla2tools:v1.7.4') { transitive = false }
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 = 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) {
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', 'checkstyleProbe' }
tasks.named('check') { dependsOn 'quality' }
tasks.named('checkstyleProbe') {
dependsOn 'compileProbeJava'
classpath = sourceSets.probe.compileClasspath
}
tasks.named('test') {
dependsOn 'quality'
inputs.dir('src/test/tla')
useJUnitPlatform()
maxHeapSize = '512m'
jvmArgs '-XX:+UseZGC'
}
tasks.named('processResources') {
inputs.property 'version', modVersion
filesMatching('META-INF/neoforge.mods.toml') { expand version: modVersion }
}
['compileJava', 'compileTestJava', 'compileProbeJava'].each { name ->
tasks.named(name, JavaCompile) {
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']) { into 'META-INF' }
}
tasks.named('processProbeResources') {
inputs.property 'version', modVersion
filesMatching('META-INF/neoforge.mods.toml') { expand version: modVersion }
dependsOn 'test'
['Slots', 'SlotOverflow', 'Traits'].each { name ->
from(layout.buildDirectory.dir("reports/models/${name}")) {
include 'cases.jsonl', 'stats.json'
eachFile { entry -> entry.path = "cases/${name}." + (entry.name == 'cases.jsonl' ? 'jsonl' : 'json') }
}
}
from({ zipTree(configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find {
it.moduleVersion.id.group == 'mekanism' && it.name == 'Mekanism'
}.file) }) {
include 'mekanism/common/content/transporter/TransporterManager*.class'
into 'baseline'
}
}
tasks.register('probeJar', Jar) {
dependsOn 'quality', 'probeClasses'
archiveBaseName = 'mc-checks'
destinationDirectory = layout.buildDirectory.dir('probe')
from sourceSets.probe.output
}