Gradle中wsdl2java插件配置失败及正确配置方法求助
Gradle WSDL2Java插件配置问题解决方案
问题背景
我有一个包含WSDL文件的项目,希望通过Gradle生成Java类。找到对应的wsdl2java插件后,多种配置方式均失败:
- 使用Plugin DSL配置
plugins { id "com.github.bjornvester.wsdl2java" version "1.2" }时,提示插件未找到 - 使用旧版插件应用方式时,出现
HttpRequestException,提示无法获取对应POM文件,服务器不支持客户端请求的TLSv1.2协议 - 已在
gradle-wrapper.properties中配置systemProp.gradle.https.protocols=TLSv1.2,TLSv1.3,但问题依旧
1. 问题根源
- 版本兼容性不匹配:你使用的1.2版本插件可能与当前Gradle版本不兼容,部分旧版Gradle对新插件的DSL语法支持不完善,或是插件仓库中该版本的坐标存在异常
- TLS协议配置未覆盖JVM层面:仅配置Gradle wrapper的系统属性可能无效,JVM默认启用的HTTPS协议仍可能是旧版本(如TLSv1.0),导致请求被服务器拒绝
- 仓库配置缺失:若插件不在Gradle默认仓库范围内,未手动添加插件仓库会导致无法拉取插件资源
2. 正确配置插件步骤
第一步:修复TLS协议问题
在项目根目录的gradle.properties中添加JVM启动参数,确保强制启用高版本TLS:
org.gradle.jvmargs=-Dhttps.protocols=TLSv1.2,TLSv1.3
保留gradle-wrapper.properties中的原有配置,双重保障协议支持。
第二步:使用兼容版本配置插件
推荐使用插件最新兼容版本(如2.0,适配Gradle 6.0+),以下两种配置方式二选一:
方式一:Plugin DSL(Gradle 6.0+推荐)
在模块的build.gradle中添加:
plugins { id 'com.github.bjornvester.wsdl2java' version '2.0' } // 配置WSDL文件和生成规则 wsdl2java { // 指定WSDL文件路径,示例为src/main/resources下的所有wsdl文件 wsdls = fileTree(dir: 'src/main/resources/wsdl', include: '*.wsdl') // 可选:指定生成代码的包名 packageName = 'com.yourcompany.ws.client' }
方式二:旧版插件应用(Gradle 5.x及以下)
在模块的build.gradle中添加:
buildscript { repositories { mavenCentral() gradlePluginPortal() } dependencies { classpath 'com.github.bjornvester:wsdl2java-gradle-plugin:2.0' } } apply plugin: 'com.github.bjornvester.wsdl2java' // 同上面的配置块 wsdl2java { wsdls = fileTree(dir: 'src/main/resources/wsdl', include: '*.wsdl') }
第三步:验证配置
运行命令执行代码生成:
./gradlew wsdl2Java
生成的Java类默认存放在build/generated/sources/wsdl2java目录下。
3. 插件配置位置
- 单模块项目:所有插件配置(
plugins块或buildscript块)都放在**build.gradle**中 - 多模块项目:在需要生成WSDL代码的子模块
build.gradle中配置;若所有子模块都需要,可在根build.gradle的subprojects块中统一配置 settings.gradle仅用于项目结构、全局仓库等配置,无需在这里添加wsdl2java插件配置
内容的提问来源于stack exchange,提问作者Varun Sharma
相关产品推荐
相关产品推荐

