通过swagger2markup+asciidoctorj生成html和pdf文档

在src目录下新增docs/asciidoc/index.adoc

通过swagger2markup+asciidoctorj生成html和pdf文档_第1张图片

idex.adoc文件内容为

include::{generated}/overview.adoc[]
include::{generated}/paths.adoc[]
include::{generated}/security.adoc[]
include::{generated}/definitions.adoc[]

--pom.xml 配置参数-------------------------------------------------------

1.如果使用了aibaba的

druid-spring-boot-starter

依赖,需要先注释掉,否则会影响MockMvc生成json


        
            com.alibaba
            druid-spring-boot-starter
            1.1.0
        

2.需要新增的Pom.xml参数如下



    1.8
    1.2.0
    ${project.basedir}/src/docs/asciidoc

    ${project.build.directory}/swagger
    ${project.build.directory}/asciidoc/snippets
    ${project.build.directory}/asciidoc/generated
    ${project.build.directory}/asciidoc/html
    ${project.build.directory}/asciidoc/pdf

    ${swagger.output.dir}/swagger.json




    
        jcenter-snapshots
        jcenter
        http://oss.jfrog.org/artifactory/oss-snapshot-local/
    
    
        jcenter-releases
        jcenter
        http://jcenter.bintray.com
        
            false
        
    



    
        jcentral
        bintray
        http://jcenter.bintray.com
        
            false
        
    
    
        jcenter-snapshots
        jcenter
        http://oss.jfrog.org/artifactory/oss-snapshot-local/
    




    io.github.swagger2markup
    swagger2markup-maven-plugin
    ${swagger2markup.version}
    
        
            io.github.swagger2markup
            swagger2markup-import-files-ext
            ${swagger2markup.version}
        
        
            io.github.swagger2markup
            swagger2markup-spring-restdocs-ext
            ${swagger2markup.version}
        
    
    
        ${swagger.input}
        ${generated.asciidoc.directory}
        
            ASCIIDOC
            TAGS
            ${project.basedir}/src/docs/asciidoc/extensions/overview
            ${project.basedir}/src/docs/asciidoc/extensions/definitions
            ${project.basedir}/src/docs/asciidoc/extensions/paths
            ${project.basedir}src/docs/asciidoc/extensions/security/

            ${swagger.snippetOutput.dir}
            true
        
    
    
        
            test
            
                convertSwagger2markup
            
        
    



    org.asciidoctor
    asciidoctor-maven-plugin
    1.5.3
    
        
            org.asciidoctor
            asciidoctorj-pdf
            1.5.0-alpha.10.1
        
        
            org.jruby
            jruby-complete
            1.7.21
        
    
    
        ${asciidoctor.input.directory}
        index.adoc
        
            book
            left
            3
            
            
            
            
            ${generated.asciidoc.directory}
        
    
    
        
            output-html
            test
            
                process-asciidoc
            
            
                html5
                ${asciidoctor.html.output.directory}
            
        

        
            output-pdf
            test
            
                process-asciidoc
            
            
                pdf
                ${asciidoctor.pdf.output.directory}
            
        
    

-新增测试类---------------

在test目录下新增/Swagger2Markup/Swagger2MarkupTest.java 用来生成Swagger.json文件

package com.htsc.aimap.Swagger2Markup;

import com.htsc.aimap.HtscAimapApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.http.MediaType;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.io.BufferedWriter;

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;

import java.nio.file.Paths;



@RunWith(SpringJUnit4ClassRunner.class)//指定运行器。也可以不标注,会使用默认运行器。
@SpringBootTest(classes = HtscAimapApplication.class)// 指定spring-boot的启动类
@AutoConfigureMockMvc

public class Swagger2MarkupTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void createSpringfoxSwaggerJson() throws Exception {
        //String designFirstSwaggerLocation = Swagger2MarkupTest.class.getResource("/swagger.yaml").getPath();

        String outputDir = System.getProperty("io.springfox.staticdocs.outputDir");
        MvcResult mvcResult = this.mockMvc.perform(get("/v2/api-docs")
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andReturn();

        MockHttpServletResponse response = mvcResult.getResponse();
        String swaggerJson = response.getContentAsString();
        Files.createDirectories(Paths.get(outputDir));
        try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(outputDir, "swagger.json"), StandardCharsets.UTF_8)){
            writer.write(swaggerJson);
        }
    }


}
最后运行Maven Test,(所有测试类都要运行通过)就可以看到下图文件

通过swagger2markup+asciidoctorj生成html和pdf文档_第2张图片

你可能感兴趣的:(通过swagger2markup+asciidoctorj生成html和pdf文档)