Friday, December 03, 2021

JAXB processing of an XSD, building with Gradle

 


// -----------------------------------------------------------------
// Generate the domain classes from the original project XSD
// -----------------------------------------------------------------
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.project.domain.service.request',
schema: 'src/build-resources/project.xsd'
)

ant.xjc(
destdir: '${jaxbTargetDir}',
package: 'dk.project.domain.service.response',
schema: 'src/build-resources/project.xsd'
)

}
}

compileJava.dependsOn xsd2java

No comments: