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

Swagger Codegen Maven Plugin生成客户端代码的依赖使用问题

解决Swagger生成客户端代码的使用与依赖问题

一、无需单独安装生成的客户端为依赖

直接将生成的源码目录纳入项目编译路径即可,你当前的插件配置缺少自动注册编译源目录的设置,补充以下配置到插件的<configuration>节点中:

<addCompileSourceRoot>true</addCompileSourceRoot>
<output>${project.build.directory}/generated-sources/swagger</output>

添加<addCompileSourceRoot>true</addCompileSourceRoot>后,Maven会自动把生成的源码目录标记为项目编译源,编译时会包含这些代码,无需单独打包安装。

二、补充生成代码所需的依赖

生成的代码依赖不会自动同步到主项目的pom.xml,你需要手动添加:

  1. 打开/target/generated-sources/swagger目录下的自动生成pom.xml,找到<dependencies>节点下的所有依赖项;
  2. 将这些依赖复制到主项目的pom.xml中,建议版本与Spring Boot内置的依赖版本保持一致(比如Jackson、OkHttp等)。

常见依赖示例:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.11.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version> <!-- 使用Spring Boot统一版本变量 -->
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.6.14</version>
</dependency>

三、使用生成的客户端代码

生成的代码核心是ApiClient类和各类XXXApi服务类,使用步骤如下:

  1. 初始化ApiClient并配置基础参数:
ApiClient apiClient = new ApiClient();
apiClient.setBasePath("https://你的API服务地址");
// 配置超时时间
apiClient.setConnectTimeout(30000);
apiClient.setReadTimeout(30000);
// 添加认证头(如果需要)
apiClient.addDefaultHeader("Authorization", "Bearer 你的令牌");
  1. 创建API服务实例并调用接口:
UserApi userApi = new UserApi(apiClient);
// 调用接口示例:根据ID获取用户信息
User user = userApi.getUserById(123L);

如果想适配Spring Boot的依赖注入,可以把ApiClient和XXXApi注册为Bean:

@Configuration
public class ApiClientConfig {
    @Bean
    public ApiClient apiClient() {
        ApiClient apiClient = new ApiClient();
        apiClient.setBasePath("https://你的API服务地址");
        return apiClient;
    }

    @Bean
    public UserApi userApi(ApiClient apiClient) {
        return new UserApi(apiClient);
    }
}

之后在业务类中直接注入使用:

@Service
public class UserService {
    private final UserApi userApi;

    public UserService(UserApi userApi) {
        this.userApi = userApi;
    }

    public User getUser(Long userId) throws ApiException {
        return userApi.getUserById(userId);
    }
}

四、优化插件配置(可选)

如果想生成更贴合Spring Boot的客户端代码,可以在插件配置中指定library参数:

<configuration>
    <inputSpec>${project.basedir}/swagger-spec.json</inputSpec>
    <language>java</language>
    <library>spring-boot</library> <!-- 指定Spring Boot适配库 -->
    <addCompileSourceRoot>true</addCompileSourceRoot>
    <output>${project.build.directory}/generated-sources/swagger</output>
    <!-- 指定生成代码的包路径 -->
    <modelPackage>com.你的公司名.model</modelPackage>
    <apiPackage>com.你的公司名.api</apiPackage>
</configuration>

这样生成的代码会自动适配Spring Boot的特性,比如支持@Autowired注入、自动配置HTTP客户端等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:03:26