Java 11 has removed support for JAXB and tools like xjc which generate the java files from the XSD schema. I couldn't find many examples in Gradle for xjc generation and tried a few options but no luck so far. Also what dependencies should one add in spring boot Gradle project to provide full support for JAXB?
Adding the correct dependencies are key to success.
...
project.ext {
jaxbTargetDir = file("src/generated/java")
}
configurations {
xsd2java
}
dependencies {
xsd2java "com.sun.xml.bind:jaxb-xjc:3.0.2"
xsd2java "com.sun.xml.bind:jaxb-impl:3.0.2"
xsd2java "com.sun.xml.bind:jaxb-core:3.0.2"
xsd2java "com.sun.activation:jakarta.activation:2.0.1"
xsd2java "jakarta.xml.bind:jakarta.xml.bind-api:3.0.1"
}
task xsd2java() {
doLast {
jaxbTargetDir.mkdirs()
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.xsd2java.asPath)
ant.jaxbTargetDir = jaxbTargetDir
ant.xjc(
destdir: '${jaxbTargetDir}',
package: 'dk.myproject.domain.service.request',
schema: 'src/build-resources/project.xsd'
)
ant.xjc(
destdir: '${jaxbTargetDir}',
package: 'dk.myproject.domain.service.response',
schema: 'src/build-resources/myproject.xsd'
)
}
}
compileJava.dependsOn xsd2java
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With