当前位置: 首页 > 知识库问答 >
问题:

如何使用Java11和gradle从XSD生成java类?

索正豪
2023-03-14

Java11已经取消了对JAXB和xjc等工具的支持,这些工具从XSD模式生成Java文件。我在Gradle中找不到很多xjc代的例子,并尝试了一些选项,但到目前为止运气不佳。另外,在SpringBootGradle项目中应该添加哪些依赖项来提供对JAXB的全面支持?

共有1个答案

姚麒
2023-03-14

添加正确的依赖关系是成功的关键。

...

    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

...
 类似资料:
  • 问题内容: 我想将我的Maven2构建文件切换到gradle。使用gradle从WSDL + XSD生成Java类似乎没有进一步的文档记录,对此没有gradle插件。我将以下配置与maven一起使用,并搜索等效的gradle。 问题答案: 我解决了…

  • 我们试图使用gradle、xsd和xjc生成JAXB类,JAXB类应该具有XmlRootElement注释,以便可以将其作为web服务响应公开。我们正在跟踪这个链接http://azagorneanu.blogspot.com/2011/09/configure-maven-to-generate-classes.html,这很有帮助,但我们无法找到一个只有gradle的特定示例。所以我们想出了一

  • 有没有什么方法可以从wsdl生成xsd。任何链接或工具也可以。最简单的方法是什么?

  • myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?

  • 我有两套XSD,一套用于入站操作,另一套用于出站操作。这两个XSD集具有相似的名称空间,但由于它们来自不同的源,因此需要在同一代码集中分别维护它们。每个XSD集合都有深度嵌套的类,并生成大约650个类。我正在使用Maven JAXB插件生成Java类 如果我指定了

  • 问题内容: 我有一个巨大的QuickBooks SDK .XSD模式文件,该文件定义了我可以从QuickBooks发送/接收的XML请求/响应。 我希望能够轻松地从这些.XSD文件生成Java类,然后将其用于将XML编组为Java对象,以及将Java对象编组为XML。 是否有捷径可寻…? 理想情况下,它在运行时不需要基本Java发行版外部的任何库。但是我很灵活 问题答案: JAXB确实可以满足您的