当前位置: 首页 > news >正文

Spring Boot-Swagger离线文档(插件方式)

Swagger2Markup简介

Swagger2Markup是Github上的一个开源项目。该项目主要用来将Swagger自动生成的文档转换成几种流行的格式以便于静态部署和使用,比如:AsciiDoc、Markdown、Confluence。
项目主页:https://github.com/Swagger2Markup/swagger2markup

版本说明

JDK: 11.0.26
Spring Boot: 2.4.11
Swagger: 2.9.2
Apache Maven: 3.8.8

下载配置Apache Maven

下载Apache Maven 3.8.8

https://gitee.com/yangsunior/csdn-resources

更新配置文件settings.xml

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><localRepository>C:\Users\tester\.m2\repository</localRepository><mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|<mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://my.repository.com/repo/path</url></mirror>--><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror><mirror><id>nexus</id><name>internal nexus repository</name><url>http://repo.maven.apache.org/maven2</url><mirrorOf>central</mirrorOf></mirror></mirrors></settings>

设置依赖下载目录: C:\Users\tester.m2\repository
添加镜像仓库地址: 3个URL镜像地址

环境变量配置maven(可选)

Idea配置Maven

idea 配置 maven

pom.xml 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.11</version><relativePath/> <!-- lookup parent from repository --></parent><properties><swagger.version>2.9.2</swagger.version></properties><dependencies><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency></dependencies><build><finalName>web-test-backend</finalName><plugins><plugin><groupId>io.github.swagger2markup</groupId><artifactId>swagger2markup-maven-plugin</artifactId><version>${swagger2markup.version}</version><configuration><swaggerInput>http://localhost:8081/v2/api-docs?group=dev-team</swaggerInput><outputDir>src/docs/asciidoc/generated</outputDir><config><!-- 生成asciidoc格式 --><swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage><!-- 生成markdown格式 --><!--<swagger2markup.markupLanguage>MARKDOWN</swagger2markup.markupLanguage>--><swagger2markup.outputLanguage>ZH</swagger2markup.outputLanguage><swagger2markup.generatedExamplesEnabled>true</swagger2markup.generatedExamplesEnabled><swagger2markup.inlineSchemaEnabled>false</swagger2markup.inlineSchemaEnabled><swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy></config></configuration></plugin><plugin><groupId>org.asciidoctor</groupId><artifactId>asciidoctor-maven-plugin</artifactId><version>2.2.6</version><dependencies><dependency><groupId>org.asciidoctor</groupId><artifactId>asciidoctorj-pdf</artifactId><version>2.3.19</version></dependency><dependency><groupId>org.jruby</groupId><artifactId>jruby-complete</artifactId><version>9.4.5.0</version></dependency><dependency><groupId>org.asciidoctor</groupId><artifactId>asciidoctorj</artifactId><version>2.5.13</version></dependency></dependencies><configuration><sourceDirectory>src/docs/asciidoc/generated</sourceDirectory><attributes><toc>left</toc></attributes></configuration><executions><execution><id>output-html</id><phase>generate-resources</phase><goals><goal>process-asciidoc</goal></goals><configuration><backend>html5</backend><outputDirectory>src/docs/asciidoc/html</outputDirectory></configuration></execution><execution><id>generate-pdf-doc</id><phase>generate-resources</phase><goals><goal>process-asciidoc</goal></goals><configuration><backend>pdf</backend><outputDirectory>src/docs/asciidoc/pdf</outputDirectory><attributes><!--导航栏在左--><toc>left</toc><!--显示层级数--><toclevels>3</toclevels><numbered></numbered><hardbreaks></hardbreaks><sectlinks></sectlinks><sectanchors></sectanchors><generated>src/docs/asciidoc</generated><pdf-fontsdir>fonts</pdf-fontsdir><pdf-stylesdir>themes</pdf-stylesdir><pdf-style>cn-theme</pdf-style></attributes></configuration></execution></executions></plugin></plugins></build>
</project>

说明

  • swaggerInput:swagger生成的接口json数据文件。

  • 输出

    • outputFile:输出到单一文件中
    • outputDir:输出到指定文件中
  • swagger2markup.markupLanguage:输出格式

  • swagger2markup.outputLanguage:语言类型:如中文(ZH),默认英语(EN)

  • swagger2markup.generatedExamplesEnabled:指定是否应该生成HTTP请求和响应示例,默认false

  • swagger2markup.inlineSchemaEnabled:是否启用参数内联

  • swagger2markup.pathsGroupedBy:api排序规则 一般用tags排序

  • executions:多个执行任务配置

  • execution.id:不可重复

    其他:参考单独生成HTML与PDF相关说明

下载依赖

maven 同步

maven sync
Maven -> Sync Project,无法下载上述依赖,需要使用maven下载依赖。

package下载

maven package

下载字体与样式文件

font-theme
资源地址:https://gitee.com/yangsunior/csdn-resources/tree/master/20250519-swagger2markup

生成confluence

管理员模式打开命令行窗口,执行命令

> C:\WindowsApp\apache-maven-3.8.8\bin\mvn swagger2markup:convertSwagger2markup[INFO] Markup document written to: C:\Projects\web-test-backend\src\docs\asciidoc\generated\paths.adoc
[INFO] Markup document written to: C:\Projects\web-test-backend\src\docs\asciidoc\generated\definitions.adoc
[INFO] Markup document written to: C:\Projects\web-test-backend\src\docs\asciidoc\generated\security.adoc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.551 s
[INFO] Finished at: 2025-05-20T16:03:19+08:00
[INFO] ------------------------------------------------------------------------

asciidoc-generated
运行之后就生成出了4个不同的静态文件

生成pdf/html

> C:\WindowsApp\apache-maven-3.8.8\bin\mvn generate-resources[INFO] Converted C:\Projects\web-test\backend\src\docs\asciidoc\generated\paths.adoc
[INFO] Converted C:\Projects\web-test\backend\src\docs\asciidoc\generated\security.adoc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:35 min
[INFO] Finished at: 2025-05-20T16:24:30+08:00
[INFO] ------------------------------------------------------------------------

asciidoc-generated2
doc-html
doc-pdfpdf目录中的中文显示为乱码,暂时未解决。

多文件合并

修改outputDir为outputFile

<plugin><groupId>io.github.swagger2markup</groupId><artifactId>swagger2markup-maven-plugin</artifactId><version>${swagger2markup.version}</version><configuration><swaggerInput>http://localhost:8081/v2/api-docs?group=dev-team</swaggerInput><outputFile>src/docs/asciidoc/generated/all</outputFile><config><!-- 生成asciidoc格式 --><swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage><!-- 生成markdown格式 --><!--<swagger2markup.markupLanguage>MARKDOWN</swagger2markup.markupLanguage>--><swagger2markup.outputLanguage>ZH</swagger2markup.outputLanguage><swagger2markup.generatedExamplesEnabled>true</swagger2markup.generatedExamplesEnabled><swagger2markup.inlineSchemaEnabled>false</swagger2markup.inlineSchemaEnabled><swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy></config></configuration>
</plugin>

doc-all

build 失败

asciidoc-build-fail
JDK从17降低至11即可。

相关文章:

  • C++(3)
  • 鸿蒙开发进阶:深入解析ArkTS语言特性与开发范式
  • 关于 Web 漏洞原理与利用:3. CSRF(跨站请求伪造)
  • Python _day31
  • 第40天-Python开发音乐播放器完整指南
  • Java 10IO流
  • [Java] idea的调试介绍
  • P2670 [NOIP 2015 普及组] 扫雷游戏
  • 软件设计师考试三大核心算法考点深度解析(红黑树 / 拓扑排序 / KMP 算法)真题考点分析——求三连
  • centos7配置静态ip 网关 DNS
  • C++中的宏
  • 解码数据语言:如何优雅的进行数仓字典建设?
  • Web开发-Python应用Flask框架Jinja模版绑定路由参数传递页面解析SSTI注入
  • 协程+Flow:现代异步编程范式,替代RxJava的完整实践指南
  • PH热榜 | 2025-05-20
  • springboot框架 集成海康ISUP-SDK 并实现 协议透传给设备下发指令!
  • 武汉科技大学人工智能与演化计算实验室许志伟课题组参加第八届智能优化与调度学术会议
  • 【QT】QTableWidget获取width为100,与真实值不符问题解决
  • BUUCTF——Kookie
  • C语言学习之内存函数
  • 梅花奖在上海丨好戏在上海不缺观众,冷门剧种叫好又叫座
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取
  • 香港油麻地旧警署将向游客开放
  • 国家发改委:系统谋划7方面53项配套举措,推动民营经济促进法落地见效
  • 甘肃白银煤矿透水事故仍有3人失联,现场约510立方米煤泥拥堵巷道
  • 新质观察|低空货运是城市发展低空经济的第一引擎