Gradle 7+中替换已废弃的no.nils.wsdl2java插件生成WSDL类
替换no.nils.wsdl2java为io.mateo.cxf-codegen适配Gradle8+、Java17方案
以下是适配你环境的完整Gradle配置,替换了废弃的wsdl2java插件并调整了相关依赖:
plugins { id 'org.springframework.boot' version '2.7.18' id "org.sonarqube" version "4.3.1.3277" id 'java' id 'idea' id 'jacoco' id 'project-report' id 'io.mateo.cxf-codegen' version '2.0.0' // 替换原no.nils.wsdl2java插件 } group = 'com.example.abc' version = '0.0.1' sourceCompatibility = '17' // CXF代码生成配置,替代原wsdl2java块 cxfCodegen { toolOptions { // 升级CXF版本到兼容Java17的3.6.3 cxfVersion = "3.6.3" // 启用自动名称解析,对应原配置的-autoNameResolution参数 autoNameResolution = true } wsdlSources { main { // 指定WSDL文件路径,对应原wsdlDir下的example.wsdl srcDir file("src/main/resources/wsdl") include "example.wsdl" } } // 可选:自定义生成代码的输出目录,默认是build/generated/sources/cxf/main/java // outputDir = file("src/main/generated-java") } jar { enabled = false } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.5" } } dependencies { // SOAP相关依赖,适配Java17和CXF3.6.x implementation "jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" implementation "com.sun.xml.bind:jaxb-impl:4.0.4" implementation "jakarta.xml.ws:jakarta.xml.ws-api:4.0.0" implementation "com.sun.xml.ws:jaxws-rt:4.0.2" implementation "org.glassfish.jaxb:jaxb-runtime:4.0.4" implementation "com.sun.xml.messaging.saaj:saaj-impl:3.0.2" implementation (group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '3.1.2'){ exclude group: 'org.yaml', module: 'snakeyaml' } implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.14.1' } sourceSets { main { java { srcDirs "src/main/java" // 添加生成代码目录到源码集,确保编译时能识别 srcDir "${cxfCodegen.outputDir}/main/java" } } }
关键改动说明
- 插件替换:移除
no.nils.wsdl2java插件,添加io.mateo.cxf-codegen插件(版本2.0.0兼容Gradle7+、Java11+) - CXF版本升级:将CXF从3.3.2升级到3.6.3,该版本完全支持Java17,同时适配Jakarta API规范
- 代码生成配置调整:用
cxfCodegen块替代原wsdl2java块,通过wsdlSources指定WSDL文件,autoNameResolution对应原配置的-autoNameResolution参数 - 依赖更新:将原
javax.*开头的依赖替换为jakarta.*的对应版本,适配Java17的Jakarta EE规范,同时更新JAXB、JAX-WS相关实现包版本 - 源码集配置:将CXF生成的代码目录添加到main源码集,确保编译阶段能正确识别生成的Java类
执行代码生成任务:运行./gradlew cxfCodegenMain即可生成对应Java类,该任务会自动绑定到compileJava任务,执行编译时会自动触发代码生成。
内容的提问来源于stack exchange,提问作者Isuru Senanayake
相关产品推荐
相关产品推荐

