You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:13:39