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

寻求Java21兼容Maven插件:WSDL生成Stub及反向生成WSDL

兼容Java21的Jakarta EE Web服务Maven插件方案

一、生成Jakarta Stub类(JAXB)

推荐使用org.jvnet.jaxb.maven2:maven-jaxb2-plugin的0.16.0+稳定版,该插件已完成Jakarta EE迁移并适配Java21:

  • 完全支持jakarta.xml.bind.*包,替代旧的javax.xml.bind.*
  • 修复了Java20+中废弃的new URL()相关API,改用NIO路径处理
  • 维护活跃,提供完整官方文档与Javadoc

配置示例:

<plugin>
    <groupId>org.jvnet.jaxb.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.16.2</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>src/main/resources/schemas</schemaDirectory>
                <generatePackage>com.yourpackage.jaxb</generatePackage>
                <args>
                    <arg>-Xjaxb-version=4.0</arg>
                </args>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>4.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>4.0.5</version>
        </dependency>
    </dependencies>
</plugin>

二、从Java类反向生成WSDL(JAX-WS)

选用com.sun.xml.ws:jaxws-maven-plugin的4.0.0+版本,适配Jakarta EE 10与Java21:

  • 支持jakarta.jws.*、jakarta.xml.ws.*等Jakarta规范包
  • 移除对Java废弃API的依赖,完全符合Java21规范
  • 官方维护,文档体系完善

配置示例:

<plugin>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>4.0.2</version>
    <executions>
        <execution>
            <goals>
                <goal>wsgen</goal>
            </goals>
            <configuration>
                <sei>com.yourpackage.service.YourWebService</sei>
                <genWsdl>true</genWsdl>
                <destDir>target/wsdl</destDir>
                <packageName>com.yourpackage.wsdl</packageName>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>jakarta.xml.ws</groupId>
            <artifactId>jakarta.xml.ws-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>4.0.2</version>
        </dependency>
    </dependencies>
</plugin>

三、额外注意事项

  • 确保Maven基于Java21运行,可在pom.xml中指定:
<properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <maven.compiler.release>21</maven.compiler.release>
</properties>
  • 所有依赖需对应Jakarta EE 10版本,避免混用javax与jakarta包

内容的提问来源于stack exchange,提问作者SkyBlackHawk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:32:18