如何用jaxb-maven-plugin从XSD生成带注释的Getter/Setter JavaDoc?
解决jaxb-maven-plugin生成代码时JavaDoc缺失XSD注释的问题
无需编写自定义插件,直接借助jaxb2-basics扩展即可实现将XSD中xs:annotation/xs:documentation的内容自动生成到Getter/Setter方法的JavaDoc中,同时保留jaxb-maven-plugin的扩展能力和更新依赖。具体步骤如下:
1. 修改pom.xml配置jaxb-maven-plugin
在原有插件配置中添加扩展依赖和参数,启用JavaDoc生成功能:
<plugin> <groupId>org.jvnet.jaxb</groupId> <artifactId>jaxb-maven-plugin</artifactId> <version>4.0.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <!-- 允许加载第三方JAXB扩展插件 --> <extension>true</extension> <args> <!-- 核心参数:启用XSD注释转JavaDoc功能 --> <arg>-Xjavadoc</arg> <!-- 可选:同时启用其他常用扩展,如toString/equals/hashCode --> <arg>-XtoString</arg> <arg>-Xequals</arg> <arg>-XhashCode</arg> </args> <plugins> <!-- 引入jaxb2-basics核心依赖 --> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics</artifactId> <version>1.11.1</version> </plugin> <!-- 引入JavaDoc生成的专用扩展插件 --> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics-javadoc</artifactId> <version>1.11.1</version> </plugin> </plugins> </configuration> </execution> </executions> </plugin>
2. 可选:自定义JavaDoc格式
如果需要对生成的JavaDoc做个性化调整(比如补充固定说明、格式化内容),可以编写XJB绑定文件(例如src/main/resources/bindings.xjb):
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" jaxb:version="3.0"> <jaxb:bindings schemaLocation="your-schema.xsd"> <!-- 针对指定元素自定义JavaDoc,${doc}会自动替换为XSD中的documentation内容 --> <jaxb:bindings node="//xsd:complexType[@name='Some_Type']/xsd:sequence/xsd:element[@name='Some_Field']"> <jaxb:javadoc> ${doc} <p>字段可选,数据类型为BoolType</p> </jaxb:javadoc> </jaxb:bindings> </jaxb:bindings> </jaxb:bindings>
然后在pom的插件configuration中添加绑定文件目录配置:
<bindingDirectory>src/main/resources</bindingDirectory>
效果验证
重新执行maven生成命令后,生成的Some_Type类中getSomeField()和setSomeField()方法的JavaDoc会自动包含XSD中定义的Some documentation内容(或自定义后的内容)。
内容的提问来源于stack exchange,提问作者cocoseis
相关产品推荐
相关产品推荐

