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

迁移至Jakarta EE 10时Swagger Maven插件构建失败求助

解决Jakarta EE 10下Swagger 2.0文档生成的兼容问题

方案一:替换插件依赖的javax构件为Jakarta版本

通过修改Maven插件的依赖配置,强制将原插件依赖的javax.*构件替换为Jakarta EE 10兼容的版本,避免编译时找不到javax.servlet.ServletContext的问题:

<plugin>
    <groupId>com.github.kongchen</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>3.1.8</version> <!-- 选用Swagger 2.0兼容的最新版本 -->
    <dependencies>
        <!-- 排除原插件的javax.servlet依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 替换为Jakarta Servlet API -->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.0.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- 替换其他javax.*依赖为Jakarta版本 -->
        <dependency>
            <groupId>jakarta.ws.rs</groupId>
            <artifactId>jakarta.ws.rs-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <!-- 保留原有的Swagger 2.0配置 -->
        <apiSources>
            <apiSource>
                <locations>com.your.package</locations>
                <basePath>/api</basePath>
                <info>
                    <title>你的API文档</title>
                    <version>1.0.0</version>
                </info>
                <swaggerDirectory>${project.build.directory}/swagger</swaggerDirectory>
            </apiSource>
        </apiSources>
    </configuration>
</plugin>

方案二:使用社区适配Jakarta的fork版插件

部分开发者对原swagger-maven-plugin进行了fork,替换了内部的javax依赖为Jakarta版本,可直接选用这类适配后的插件。配置示例(以某第三方维护版本为例,需确认实际可用的groupId和版本):

<plugin>
    <groupId>io.github.swagger2markup</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>3.1.8-jakarta</version>
    <configuration>
        <!-- 原Swagger 2.0配置保持不变 -->
        <apiSources>
            <apiSource>
                <locations>com.your.package</locations>
                <swaggerDirectory>${project.build.directory}/swagger</swaggerDirectory>
            </apiSource>
        </apiSources>
    </configuration>
</plugin>

方案三:手动编写代码生成Swagger 2.0文档(兜底方案)

如果插件方案都不可行,可通过代码手动生成Swagger 2.0的JSON/YAML文件:

  1. 引入Swagger Core的Jakarta兼容依赖:
<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-jaxrs2-jakarta</artifactId>
    <version>2.2.15</version> <!-- 支持Swagger 2.0的Jakarta适配版本 -->
    <scope>compile</scope>
</dependency>
  1. 编写生成文档的Java类:
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.util.Json;

import java.io.FileWriter;
import java.io.IOException;

public class SwaggerDocGenerator {
    public static void main(String[] args) throws IOException {
        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setBasePath("/api");
        beanConfig.setResourcePackage("com.your.package");
        beanConfig.setScan(true);
        
        // 生成Swagger 2.0 JSON文件
        String swaggerJson = Json.pretty(beanConfig.getSwagger());
        try (FileWriter writer = new FileWriter("target/swagger/swagger.json")) {
            writer.write(swaggerJson);
        }
    }
}
  1. 配置Maven的exec-maven-plugin在构建阶段执行该类:
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>java</goal>
            </goals>
            <configuration>
                <mainClass>com.your.package.SwaggerDocGenerator</mainClass>
            </configuration>
        </execution>
    </executions>
</plugin>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:56:15