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

类与方法含@Path注解时Swagger生成重复API记录的解决咨询

解决Swagger Maven插件生成重复API路径的问题

问题根因

swagger-maven-plugin-jakarta会扫描所有带有JAX-RS注解的类,你的接口类标注了@Path("/v1.0/private/communications"),实现类又额外标注了@Path("/"),插件同时解析接口和实现类后,分别组合出两条路径:

  • 接口类+方法:/v1.0/private/communications/{id}
  • 实现类+方法:/{id}

可行解决方案

  • 移除实现类的@Path注解
    实现类会继承接口的@Path配置,不需要自己再标注@Path("/"),直接删掉这个注解,插件就只会解析接口类的路径配置,生成唯一的完整路径。

  • 配置插件仅扫描接口类
    在pom.xml的插件配置里,指定扫描范围为接口所在包,或者排除实现类的包:

    <plugin>
      <groupId>io.swagger.core.v3</groupId>
      <artifactId>swagger-maven-plugin-jakarta</artifactId>
      <version>2.2.38</version>
      <executions>
        <execution>
          <goals>
            <goal>resolve</goal>
          </goals>
          <configuration>
            <!-- 只扫描接口包 -->
            <scanBasePackages>
              <scanBasePackage>com.yourpackage.api</scanBasePackage>
            </scanBasePackages>
            <!-- 或者排除实现类包 -->
            <excludes>
              <exclude>com.yourpackage.impl/**</exclude>
            </excludes>
          </configuration>
        </execution>
      </executions>
    </plugin>
    
  • 用@Hidden注解忽略实现类
    在实现类上添加@Hidden(io.swagger.v3.oas.annotations.Hidden)注解,插件会跳过该类的解析,只保留接口类生成的路径:

    @Hidden
    @Path("/")
    public class YourCommunicationImpl implements CommunicationApi {
        // 实现代码
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:12:10