You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle7.2使用xjc插件从URL的XSD生成Java类时xjc配置行报错

XJC插件配置报错排查解决步骤
  • 检查插件引入是否正确
    确认build.gradle顶部的plugins块已正确声明适配Gradle版本的xjc插件,示例配置如下:
    plugins {
        id 'com.github.bjornvester.xjc' version '1.8.0'
    }
    
    若使用低于7.0的Gradle版本,请选择对应兼容的旧版插件。如果是多模块项目,需将插件声明在需要生成代码的子模块配置文件中,不可仅声明在根项目。
  • 修正配置项赋值语法
    新版xjc插件的所有属性需使用.set()方法赋值,不可直接用=赋值,你原配置中的outputJavaDir、xsdFiles都需要调整写法,避免语法错误。
  • 调整下载逻辑的配置位置
    你原配置中将doFirst直接写在xjc全局块中属于错误写法,下载逻辑需要单独封装为独立任务,并让xjc任务依赖该下载任务,避免配置阶段执行下载逻辑引发作用域错误,同时保证执行xjc前文件已下载完成。
  • 检查路径与网络连通性
    确认本地schema1.wsdl的路径正确,同时构建环境可以正常访问你配置的在线xsd地址,避免文件不存在报错。

修正后完整配置示例

xjc {
    xjcVersion.set("2.3.3")
    outputJavaDir.set(file("${buildDir}/generated-sources/jaxb"))
    
    def downloaded = file("$buildDir/xjc/downloaded/schema2.wsdl")
    // 定义独立的xsd下载任务
    tasks.register('downloadSchema') {
        doFirst {
            mkdir downloaded.parentFile
            downloaded.text = new URL("http://www.example.com/foo.xsd").text
        }
    }
    // 绑定依赖关系,xjc执行前先下载文件
    tasks.named('xjc').configure {
        dependsOn 'downloadSchema'
    }

    groups {
        register("schema1") {
            xsdFiles.set(files("${projectDir}/src/main/resources/wsdl/schema1.wsdl"))
            defaultPackage.set("pl.com.project.schema1")
        }
        register("schema2") {
            xsdFiles.set(files(downloaded))
            defaultPackage.set("pl.com.project.schema2")
        }
    }
}

内容的提问来源于stack exchange,提问作者Wojtek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:54:03