簡體   English   中英

如何使用 Java 11 和 Z8ED1A771BC236C287AD93C665CFZ 從 XSD 生成 java 類

[英]How to generate java classes from XSD using Java 11 and gradle?

Java 11 已刪除對 JAXB 和 xjc 等工具的支持,這些工具會從 java 文件生成 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

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM