生成Swagger2静态文档

一、代码生成静态文档


		
			io.springfox
			springfox-swagger2
			2.6.0
		
		
		
			io.springfox
			springfox-swagger-ui
			2.6.0
		
		
			io.github.swagger2markup
			swagger2markup
			1.3.1
		
		
			io.swagger
			swagger-core
			1.5.16
		
		
			io.swagger
			swagger-models
			1.5.16
		
		
			org.pegdown
			pegdown
			1.4.2
		

jar包容易出问题:
正常后面两个jar是不需要的,因为jar包容易报错
java.lang.NoSuchMethodError: io.swagger.models.Response.responseSchema(Lio/swagger/models/Model;)Lio/swagger/models/Response;
java.lang.NoSuchFieldError: MULTIPLE_OF
因为 springfox-swagger2 --2.60这个版本里面对应的swagger-core是1.5.12 ,swagger-models是1.5.10的。想要通过swagger2markup生成静态文档需要通过core和model转换成对应的实体格式。然而core和model好像11前都没有向后兼容,所以需要core和model都需要在1.5.11之上。引入的 core和model就是为了替换springfox-swagger2里面的包
Test类

import io.github.swagger2markup.GroupBy;
import io.github.swagger2markup.Language;
import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
import io.github.swagger2markup.markup.builder.MarkupLanguage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.net.URL;
import java.nio.file.Paths;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class UserManageApplicationTests {
	/**
	 * 生成AsciiDocs格式文档
	 * @throws Exception
	 */
	@Test
	public void generateAsciiDocs() throws Exception {
		//    输出Ascii格式
		Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
				.withMarkupLanguage(MarkupLanguage.ASCIIDOC)//设置生成格式
				.withOutputLanguage(Language.ZH)//设置语言中文还是其他语言
				.withPathsGroupedBy(GroupBy.TAGS)
				.withGeneratedExamples()
				.withoutInlineSchema()
				.build();
		//设置swagger-api的json来源
		Swagger2MarkupConverter.from(new URL("http://localhost:9090/v2/api-docs"))
				.withConfig(config)
				.build()
				.toFolder(Paths.get("./docs/asciidoc/generated"));//设置生成文件的路径
	}

	/**
	 * 生成Markdown格式文档
	 * @throws Exception
	 */
	@Test
	public void generateMarkdownDocs() throws Exception {
		//    输出Markdown格式
		Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
				.withMarkupLanguage(MarkupLanguage.MARKDOWN)
				.withOutputLanguage(Language.ZH)
				.withPathsGroupedBy(GroupBy.TAGS)
				.withGeneratedExamples()
				.withoutInlineSchema()
				.build();

		Swagger2MarkupConverter.from(new URL("http://localhost:9090/v2/api-docs"))
				.withConfig(config)
				.build()
				.toFolder(Paths.get("./docs/markdown/generated"));
	}
	/**
	 * 生成Confluence格式文档
	 * @throws Exception
	 */
	@Test
	public void generateConfluenceDocs() throws Exception {
		//    输出Confluence使用的格式
		Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
				.withMarkupLanguage(MarkupLanguage.CONFLUENCE_MARKUP)
				.withOutputLanguage(Language.ZH)
				.withPathsGroupedBy(GroupBy.TAGS)
				.withGeneratedExamples()
				.withoutInlineSchema()
				.build();

		Swagger2MarkupConverter.from(new URL("http://localhost:9090/v2/api-docs"))
				.withConfig(config)
				.build()
				.toFolder(Paths.get("./docs/confluence/generated"));
	}

	/**
	 * 生成AsciiDocs格式文档,并汇总成一个文件
	 * @throws Exception
	 */
	@Test
	public void generateAsciiDocsToFile() throws Exception {
		//    输出Ascii到单文件
		Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
				.withMarkupLanguage(MarkupLanguage.ASCIIDOC)
				.withOutputLanguage(Language.ZH)
				.withPathsGroupedBy(GroupBy.TAGS)
				.withGeneratedExamples()
				.withoutInlineSchema()
				.build();

		Swagger2MarkupConverter.from(new URL("http://localhost:9090/v2/api-docs"))
				.withConfig(config)
				.build()
				.toFile(Paths.get("./docs/asciidoc/generated/all"));
	}

	/**
	 * 生成Markdown格式文档,并汇总成一个文件
	 * @throws Exception
	 */
	@Test
	public void generateMarkdownDocsToFile() throws Exception {
		//    输出Markdown到单文件
		Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
				.withMarkupLanguage(MarkupLanguage.MARKDOWN)
				.withOutputLanguage(Language.ZH)
				.withPathsGroupedBy(GroupBy.TAGS)
				.withGeneratedExamples()
				.withoutInlineSchema()
				.build();

		Swagger2MarkupConverter.from(new URL("http://localhost:9090/v2/api-docs"))
				.withConfig(config)
				.build()
				.toFile(Paths.get("./docs/markdown/generated/all"));
	}
}

二、通过maven插件生成
1、生成ASCIIDOC等,效果等同上面代码


				io.github.swagger2markup
				swagger2markup-maven-plugin
				1.3.4
				
					http://localhost:9090/v2/api-docs
					./docs/asciidoc/generated
					
						ASCIIDOC
					
				
			

mvn执行swagger2markup:convertSwagger2markup
若遇到问题java.lang.NoClassDefFoundError: org/pegdown/PegDownProcessor修改swagger2markup-maven-plugin-1.3.4.pom增加


			org.pegdown
			pegdown
			1.4.2
		

2、生成html(前提是已经存在ASCIIDOC)


				org.asciidoctor
				asciidoctor-maven-plugin
				1.5.6
				
					
					../docs/asciidoc/generated
					
					../docs/asciidoc/html
					html
					coderay
					
						
						left
						
						3
						
						true
					
				
			

参考: https://blog.csdn.net/qq_34727675/article/details/82961995

你可能感兴趣的:(springboot)