Gradle7.2使用xjc插件从URL的XSD生成Java类时xjc配置行报错
XJC插件配置报错排查解决步骤
- 检查插件引入是否正确
确认build.gradle顶部的plugins块已正确声明适配Gradle版本的xjc插件,示例配置如下:
若使用低于7.0的Gradle版本,请选择对应兼容的旧版插件。如果是多模块项目,需将插件声明在需要生成代码的子模块配置文件中,不可仅声明在根项目。plugins { id 'com.github.bjornvester.xjc' version '1.8.0' } - 修正配置项赋值语法
新版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
相关产品推荐
相关产品推荐

