From 8eab6c952c35e455237059800a8a8d582ef9737c Mon Sep 17 00:00:00 2001 From: Jonni Madekivi Date: Mon, 10 Mar 2025 15:55:18 +0200 Subject: [PATCH 1/2] Remove xjctool Gradle plugin in favor of direct xjc usage --- service/sarmamodel/build.gradle.kts | 41 +++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/service/sarmamodel/build.gradle.kts b/service/sarmamodel/build.gradle.kts index 6aa1bd76a00..2a47000e219 100644 --- a/service/sarmamodel/build.gradle.kts +++ b/service/sarmamodel/build.gradle.kts @@ -3,26 +3,45 @@ plugins { java - id("org.unbroken-dome.xjc") version "2.0.0" } -repositories { - mavenCentral() +configurations { + create("jaxb") } dependencies { - implementation(platform(project(":evaka-bom"))) - implementation("jakarta.xml.bind:jakarta.xml.bind-api") - xjcTool("com.sun.xml.bind:jaxb-xjc:3.0.2") - xjcTool("com.sun.xml.bind:jaxb-impl:3.0.2") + "jaxb"("com.sun.xml.bind:jaxb-xjc:4.0.5") + "jaxb"("com.sun.xml.bind:jaxb-impl:4.0.5") + implementation("jakarta.xml.bind:jakarta.xml.bind-api:4.0.2") } -sourceSets { - main { - xjcTargetPackage.set("fi.espoo.evaka.sarma.model") +tasks.register("generateJaxb") { + val outputDir = layout.buildDirectory.dir("generated-sources/jaxb") + val schemaDir = project.file("src/main/schema") + + inputs.dir(schemaDir) + outputs.dir(outputDir) + + doLast { + outputDir.get().asFile.mkdirs() + + ant.withGroovyBuilder { + "taskdef"( + "name" to "xjc", + "classname" to "com.sun.tools.xjc.XJCTask", + "classpath" to configurations["jaxb"].asPath + ) + "xjc"( + "destdir" to outputDir.get().asFile, + "package" to "fi.espoo.evaka.sarma.model" + ) { + "schema"("dir" to schemaDir, "includes" to "**/*.xsd") + } + } } } tasks.named("compileJava") { - dependsOn("xjcGenerate") + dependsOn("generateJaxb") + sourceSets.main.get().java.srcDir(layout.buildDirectory.dir("generated-sources/jaxb")) } \ No newline at end of file From 2f4be0b5d875503734ae737c68ac410f09690f88 Mon Sep 17 00:00:00 2001 From: Jonni Madekivi Date: Tue, 11 Mar 2025 15:17:48 +0200 Subject: [PATCH 2/2] Follow the same pattern as vtjclient (use JavaExec instead of ant) --- service/sarmamodel/build.gradle.kts | 47 ++++++++++++----------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/service/sarmamodel/build.gradle.kts b/service/sarmamodel/build.gradle.kts index 2a47000e219..e97cadd71c4 100644 --- a/service/sarmamodel/build.gradle.kts +++ b/service/sarmamodel/build.gradle.kts @@ -5,43 +5,36 @@ plugins { java } -configurations { - create("jaxb") +val generatedSources = layout.buildDirectory.dir("generated/sources/java/main") +val xsd2java: Configuration by configurations.creating + +sourceSets { + main { + java.srcDir(generatedSources) + } } dependencies { - "jaxb"("com.sun.xml.bind:jaxb-xjc:4.0.5") - "jaxb"("com.sun.xml.bind:jaxb-impl:4.0.5") + xsd2java("com.sun.xml.bind:jaxb-xjc:4.0.5") + xsd2java("com.sun.xml.bind:jaxb-impl:4.0.5") implementation("jakarta.xml.bind:jakarta.xml.bind-api:4.0.2") } -tasks.register("generateJaxb") { - val outputDir = layout.buildDirectory.dir("generated-sources/jaxb") +tasks.register("generateJaxb") { val schemaDir = project.file("src/main/schema") + mainClass.set("com.sun.tools.xjc.Driver") + classpath = xsd2java + args = listOf( + "-d", generatedSources.get().toString(), + "-p", "fi.espoo.evaka.sarma.model", + schemaDir.toString() + ) + inputs.dir(schemaDir) - outputs.dir(outputDir) - - doLast { - outputDir.get().asFile.mkdirs() - - ant.withGroovyBuilder { - "taskdef"( - "name" to "xjc", - "classname" to "com.sun.tools.xjc.XJCTask", - "classpath" to configurations["jaxb"].asPath - ) - "xjc"( - "destdir" to outputDir.get().asFile, - "package" to "fi.espoo.evaka.sarma.model" - ) { - "schema"("dir" to schemaDir, "includes" to "**/*.xsd") - } - } - } + outputs.dir(generatedSources) } tasks.named("compileJava") { dependsOn("generateJaxb") - sourceSets.main.get().java.srcDir(layout.buildDirectory.dir("generated-sources/jaxb")) -} \ No newline at end of file +} \ No newline at end of file