如何使用 Java 11 和 gradle 从 XSD 生成 java 类?
How to generate java classes from XSD using Java 11 and gradle?
Java 11 删除了对 JAXB 和 xjc 等工具的支持,这些工具从 XSD 模式生成 java 文件。我在 Gradle 中找不到很多关于 xjc 生成的示例,并尝试了一些选项,但到目前为止没有成功。
此外,应该在 spring 启动 Gradle 项目中添加哪些依赖项以提供对 JAXB 的全面支持?
添加正确的依赖项是成功的关键。
...
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
...
Java 11 删除了对 JAXB 和 xjc 等工具的支持,这些工具从 XSD 模式生成 java 文件。我在 Gradle 中找不到很多关于 xjc 生成的示例,并尝试了一些选项,但到目前为止没有成功。 此外,应该在 spring 启动 Gradle 项目中添加哪些依赖项以提供对 JAXB 的全面支持?
添加正确的依赖项是成功的关键。
... 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 ...