如何将jaxb-gradle-plugin迁移到Java 11支持的5.1.0新版本
JAXB Gradle配置迁移到Java11适配的5.1.0版本操作步骤
1. 清理原有旧配置
删除你当前写的自定义jaxb任务的全部代码,旧的Ant XJC调用方式依赖JDK内置的JAXB组件,Java11起JAXB已经从JDK默认移除,原有配置无法直接运行。
2. 引入5.1.0版本的Gradle JAXB插件
在build.gradle的插件声明块添加插件引用:
plugins { // 保留你原有的其他插件,比如java、java-library等 id "io.freefair.jaxb" version "5.1.0" }
3. 配置XJC生成参数,对齐原有逻辑
添加如下配置,完全复现你原有配置的生成规则:
// 保留你原有packageName、generatedSrcDir的赋值逻辑即可 ext { packageName = "你的实际生成包名" generatedSrcDir = file("你原来的生成目录路径") } // 配置XJC生成规则 jaxb { xjc { sourceSets { main { xsd { srcDir "src/main/resources/xsd" include "*.xsd" } } } targetPackage = packageName outputDirectory = generatedSrcDir args = ["-no-header"] } } // 把生成的代码纳入编译路径,确保编译前自动执行生成逻辑 sourceSets.main.java.srcDir generatedSrcDir compileJava.dependsOn xjc
4. 补充Java11必要的JAXB依赖
在dependencies块添加如下依赖:
// JAXB运行时依赖 implementation 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3' implementation 'com.sun.xml.bind:jaxb-impl:2.3.3' // XJC工具依赖 jaxb 'com.sun.xml.bind:jaxb-xjc:2.3.3'
5. 验证执行
运行./gradlew compileJava即可自动触发代码生成,生成的代码会输出到你指定的generatedSrcDir目录,同时自动纳入Java编译流程。
内容的提问来源于stack exchange,提问作者yurii.pitomets
相关产品推荐
相关产品推荐

