使用Javadocs生成Swagger文档

时间:2015-09-01 20:54:23

标签: java maven swagger swagger-maven-plugin

我想为现有的一组RESTful API构建Swagger文档。我有以下要求:

  1. 离线生成Swagger文档(我使用http://kongchen.github.io/swagger-maven-plugin/)。这个插件帮助我在编译期间生成Swagger文档。
  2. 阅读现有的Javadoc,以便可以在Swagger文档中使用它们。
  3. 到目前为止,使用上面的插件我能够实现第1点。所以对于现有的REST方法:

     /**
     * <p>
     * Gets the {@link DisplayPreferenceModel} with the name as provided in the parameter. The preference with the given name defined at the tenant or master level is returned.
     * This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required.
     * </p>
     * @param preferenceName
     *            - The name of the preference.
     * @return {@link DisplayPreferenceModel}
     */
    @RequestMapping(method = RequestMethod.GET, value = "/preferences/{preferenceName}")
    @ApiOperation(value = "This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required", 
                            notes = "No Notes please", response = DisplayPreferenceModel.class)
    @ApiResponses(value = { 
                            @ApiResponse(code = 400, message = "Invalid preferenceName supplied"), 
                            @ApiResponse(code = 404, message = "Display Preference Not Found")
                          }
                )
    public DisplayPreferenceModel getDisplayPreference( @PathVariable("preferenceName") final String preferenceName ) {
    }
    

    我能够生成Swagger文档。 @ApiOperation&amp;的用法@ApiResponses使我的文档看起来很棒。

    然而,我的问题是我可以使用Javadoc而不是让每个开发人员创建@ApiOperation&amp; @ApiResponses以便为我的团队节省时间?

2 个答案:

答案 0 :(得分:12)

您可以使用带有Swagger模块的Enunciate从Javadoc生成swagger-ui。首先,您需要将maven插件添加到您的pom文件中; e.g。

<plugin>
        <groupId>com.webcohesion.enunciate</groupId>
        <artifactId>enunciate-maven-plugin</artifactId>
        <version>${enunciate.version}</version>
        <executions>
           <execution>
                  <goals>
                    <goal>docs</goal>
                  </goals>
                  <configuration>
                    <configFile>enunciate.xml</configFile>
                    <docsDir>${project.build.directory}</docsDir>
                  </configuration>
           </execution>
        </executions>
</plugin>

其中&#39; enunciate.xml&#39;包含项目特定的配置,如下所示:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://enunciate.webcohesion.com/schemas/enunciate-2.0.0-M.3.xsd">

    <application root="/rest" />

</enunciate>

然后运行mvn compile,它将从您的Javadoc生成Swagger文档文件。

答案 1 :(得分:0)

似乎有用于生成JSON Swagger资源列表的javadoc doclet: https://github.com/teamcarma/swagger-jaxrs-doclet