This repository has been archived on 2026-05-29. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Programmierprojekt/build.gradle
2026-04-09 18:04:57 +02:00

125 lines
3.3 KiB
Groovy

plugins {
id 'application'
id 'java'
id 'org.openjfx.javafxplugin' version '0.1.0'
id 'checkstyle'
id 'com.diffplug.spotless' version '7.0.2'
}
group = 'ch.unibas.dmi.dbis'
version = '0.0.1-ALPHA'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
application {
mainClass = 'ch.unibas.dmi.dbis.cs108.casono.Main'
}
repositories {
mavenCentral()
}
javafx {
version = "25.0.2"
modules = ['javafx.controls', 'javafx.fxml', 'javafx.base', 'javafx.graphics', 'javafx.web']
}
dependencies {
// Source: https://mvnrepository.com/artifact/org.apache.logging.log4j
implementation("org.apache.logging.log4j:log4j-api:2.25.3")
runtimeOnly("org.apache.logging.log4j:log4j-core:2.25.3")
implementation("org.jspecify:jspecify:1.0.0")
// Source: https://mvnrepository.com/artifact/org.fusesource.jansi/jansi
runtimeOnly("org.fusesource.jansi:jansi:2.4.2")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.10.0")
implementation 'org.json:json:20240303'
}
test {
useJUnitPlatform()
}
checkstyle {
toolVersion = '10.21.0'
configFile = file('config/checkstyle/checkstyle.xml')
configProperties = [
'suppressionFile': file('config/checkstyle/suppressions.xml').absolutePath
]
}
spotless {
java {
googleJavaFormat('1.35.0').aosp()
importOrder()
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
}
tasks.named('jar', Jar) {
manifest {
attributes('Main-Class': application.mainClass.get())
}
}
// Dieses JVM-Argument erlaubt JavaFX und anderen Libraries den Zugriff auf native Methoden.
// Ohne diese Einstellung erscheinen Warnungen und zukünftige Java-Versionen könnten den Zugriff blockieren.
// Siehe: https://openjdk.org/jeps/472
tasks.withType(JavaExec) {
jvmArgs += '--enable-native-access=ALL-UNNAMED'
}
tasks.register('cruntest', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'ch.unibas.dmi.dbis.cs108.casono.Main'
jvmArgs '--enable-native-access=ALL-UNNAMED'
args 'client', '0.0.0.0:1234'
}
tasks.register('fatJar', Jar) {
group = 'build'
description = 'Assembles a runnable fat JAR including runtime dependencies.'
archiveClassifier = 'all'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes('Main-Class': application.mainClass.get())
}
// include your compiled classes/resources
from(sourceSets.main.output)
// make sure runtimeClasspath is resolved before we try to zipTree it
dependsOn(configurations.runtimeClasspath)
// unpack runtime deps into the jar
from({
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
})
}
tasks.register('javadocJar', Jar) {
group = 'build'
description = 'Assembles a Javadoc JAR.'
dependsOn tasks.named('javadoc')
archiveClassifier = 'javadoc'
from(tasks.javadoc.destinationDir)
}
tasks.register('build-cs108') {
group = 'build'
description = 'Produces executable JAR and Javadoc JAR for CS108.'
dependsOn tasks.named('fatJar'), tasks.named('javadocJar')
}