【问题标题】:xjc, generate java classes from xsd (using URL) in gradle 7.2xjc,在 gradle 7.2 中从 xsd(使用 URL)生成 java 类
【发布时间】:2021-09-27 12:39:23
【问题描述】:

我使用插件 com.github.bjornvester.xjc 从 xsd 生成 java 类:

xjc {
    xjcVersion.set("2.3.3")
    outputJavaDir = file("${buildDir}/generated-sources/jaxb")
    
    ext.downloaded = file("$buildDir/xjc/downloaded/schema2.wsdl")
    doFirst {
        mkdir downloaded.parentFile
        downloaded.text = new URL("http://www.example.com/foo.xsd").text}
    
    groups {
        register("schema1") {
            xsdFiles = files(xsdDir.file("${projectDir}/src/main/resources/wsdl/schema1.wsdl"))
            defaultPackage.set("pl.com.project.schema1")
        }
        register("schema2") {
            xsdFiles = files(downloaded)
            defaultPackage.set("pl.com.project.schema2")
        }
    }
}

我在 "xjc {" 行出现错误:

【问题讨论】:

    标签: gradle xsd xjc


    【解决方案1】:

    在我之前的尝试中,我错误地认为 xjc 是一项任务。在查看github page 之后,我可以看到“xjc”是一个扩展对象,而不是一个任务

    所以试试这个:

    tasks.register('downloadXsd') {
       ext.xsd = file("$buildDir/downloadXsd/foo.xsd")
       outputs.file xsd // important!!! configures the task outputs
       doLast {
          mkdir xsd.parentFile
          xsd.text = new URL("http://www.example.com/foo.xsd").text
       }
    }
    xjc {
        ...
        groups {
            register("schema1") {
                // assuming the plugin is written properly, this should configure a task dependency
                xsdFiles = files(tasks.named('downloadXsd'))
                ...
            }
            ...
        }
    }
    

    您可以使用download task 来改进这一点,以下载 xsd,它显示下载进度并具有缓存选项

    【讨论】:

    • 你能检查一下我编辑过的帖子吗?我使用了您的解决方案,但出现错误:)
    • 已更新(我错误地认为 xjc 是一项任务)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多