Add support for tjava

This commit is contained in:
2026-06-09 14:02:15 +02:00
parent 1f1165da1c
commit cd06fdcdd0
2 changed files with 61 additions and 10 deletions
+59 -7
View File
@@ -32,14 +32,18 @@ repositories {
mavenCentral()
}
dependencies {
implementation(platform("org.apache.logging.log4j:log4j-bom:2.25.2"))
implementation("org.apache.logging.log4j:log4j-api")
runtimeOnly("org.apache.logging.log4j:log4j-core")
compileOnly("org.jetbrains:annotations:26.0.2-1")
val detag by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = true
}
implementation("com.r35157.libs:valuetypes-basic-api:0.1-dev")
implementation("com.r35157.nenjim:valuetypes-api:0.1-dev")
dependencies {
detag("com.r35157.tools:detag-impl_ref:0.1-dev")
compileOnly("org.jetbrains:annotations:26.1.0")
runtimeOnly("org.apache.logging.log4j:log4j-core:2.26.0")
runtimeOnly("org.apache.logging.log4j:log4j-slf4j2-impl:2.26.0")
implementation("org.slf4j:slf4j-api:2.0.18")
implementation("com.r35157.nenjim:hubd-api:0.1-dev")
}
@@ -49,6 +53,54 @@ java {
tasks.withType<JavaCompile>().configureEach {
options.release.set(25)
options.compilerArgs.addAll(listOf("-Xmaxerrs", "1"))
}
val generatedDetagMain = layout.buildDirectory.dir("generated/sources/detag/main/java")
val cleanGeneratedDetagMain by tasks.registering(Delete::class) {
delete(generatedDetagMain)
}
val detagMain by tasks.registering(JavaExec::class) {
group = "build"
description = "Generates Java sources from .tjava files"
classpath = detag
mainClass.set("com.r35157.tools.detag.impl.ref.Main")
val configFile = layout.projectDirectory.file("../detag.conf")
val sourceRoot = layout.projectDirectory.dir("src/main/tjava")
inputs.file(configFile)
inputs.dir(sourceRoot)
outputs.dir(generatedDetagMain)
dependsOn(cleanGeneratedDetagMain)
args(
"--config", configFile.asFile.absolutePath,
"--source-root", sourceRoot.asFile.absolutePath,
"--out", generatedDetagMain.get().asFile.absolutePath
)
}
sourceSets {
main {
// Human-written Detag source files. IntelliJ should treat this as a source root.
// Gradle's Java compiler will still only compile .java files directly from sourceSets,
// so the .tjava files are not compiled directly.
java.srcDir("src/main/tjava")
}
}
tasks.named<JavaCompile>("compileJava") {
dependsOn(detagMain)
// Compiler input generated from src/main/tjava.
// Do not add this directory to sourceSets, or IntelliJ will see duplicate classes:
// MyClass.tjava + build/generated/.../MyClass.java.
source(generatedDetagMain)
}
val libsDir = layout.buildDirectory.dir("libs")