Swagger Maven插件无法从@BeanParam带注释的参数生成参数

时间:2019-06-04 15:43:33

标签: jax-rs swagger-maven-plugin

如标题中所述,我对swagger maven插件的配置似乎正在跳过使用@BeanParam注释的参数。

我已经以与github上示例相同的方式配置了我的代码(在下面的链接中显示),所以我不知道这是怎么回事。

Call in main class MyBean example

这是我当前的配置

我的输入文件

//MyInterface.java
@Api(value = "myInterface")
public interface MyInterface {
    @Path("/.../{bar}/.../{baz}")
    Response foo(@BeanParam MyBean myBean);
}
//MyBean.java
public class MyBean {
    @PathParam("bar")
    private Long bar;

    @PathParam("baz")
    private Long baz;

    //getters and setters
}
<!-- pom.xml -->
<plugin>
  <groupId>com.github.kongchen</groupId>
  <artifactId>swagger-maven-plugin</artifactId>
  <version>3.1.8</version>
  <executions>
    <execution>
      <id>ID</id>
      <phase>compile</phase>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <apiSources>
          <apiSource>
            <springmvc>false</springmvc>
            <locations>
              <location>package.of.MyInterface</location>
              <location>package.of.MyBean</location>
            </locations>
            <schemes>
              <scheme>https</scheme>
            </schemes>
            <host>${swagger.ui.host}</host>
            <basePath>/api</basePath>
            <info>
              <title>Title</title>
              <version>1.0.0</version>
              <description>Desc</description>
            </info>
            <outputFormats>yaml</outputFormats>
            <swaggerFileName>${project.name}-external</swaggerFileName>
            <swaggerDirectory>${project.build.directory}/swagger</swaggerDirectory>
          </apiSource>
        </apiSources>
      </configuration>
    </execution>
   </executions>
 </plugin>

我的输出Swagger文件

---
swagger: "2.0"
#...
paths:
  /.../{bar}/.../{baz}:
    put:
      operationId: "foo"
      parameters: []

是什么导致输出中的参数数组保持为空?我所有注释的没有bean的方法都可以正常工作。

1 个答案:

答案 0 :(得分:0)

我最终使用了this插件,文档虽然很少,但是梳理这些示例很有帮助。作为额外的好处,它会生成openapi3而不是swagger 2。