好用的文档工具smart-doc

smart-doc不得不说是一款非常好用的文档工具,尤其是它几乎不与项目耦合的特性十分值得所有java开发人员日常使用它~

之前及现在用的

我从事开发以来,用过形形色色各式各样的文档工具,比如一开始的用

01. word或excel

这种文档十分依赖于开发人员同步维护,另外office与代码是两套东西,耗时耗力且很容易

由于疏忽忘记维护,导致版本版本不一致的问题~

02. showdoc

这东西看起来比较美观,非常适合外部人员接入之使用,当然缺点也很明显:

  • 公开文档安全及私密性就差很多
  • 也同样存在手动编写的问题,需要跟随代码同步维护
  • 使用范围比较窄,虽方便接入人员用,测试及开发自测仍旧比较麻烦
  • 导入导出似乎受限制,不知道现在有没改善

03. swagger

后来有了有了 swagger,一开始觉得这东西蛮不错的,主要体现在:

  • 不需要再写word或excel
  • 定义文档接口的方式更贴合传统编码的方式
  • 文档可生成在线网页doc的方式也可以通过跑代码生成adoc文件+asciidoctor工具生成单html文档,这非常利于文档分发

东西虽好,但是缺点也是十分明显的:

  • 代码耦合性太强了,swagger依赖必须与代码一起部署(包括生产)
  • 在线文档十分便捷,但是由于 swagger 可能的漏洞的存在,增加了系统风险的可能性(这个本人碰到过)
  • 能生成实用的``html文档,可似乎缺少了供测试使用的 jmeterpostman文档,测试人员依然需要手动构建测试接口
  • 特别需要注意的是swagger v2及之后似乎缺少了html文档的生成途径(文档工具不能越做越返祖啊...)
  • swagger 文档不论是在线的还是离线的文档 对于复杂的 json 需要逐级便利 (如果能平铺为一个table就好了)

04. smart-doc

这个文档工具在目前我所经手的项目中广泛之使用,如图,需要的功能基本都有了

smart-doc 有啥优点

  • 由于仅有 plugin 及一个json配置,无任何 ApiModelPropertyApiModelSchema 侵入性注解代码
  • 可以生成诸如 html(单文件需要先走adoc后转html)、openapipostmanjmeterword 等主流且前端用也可后端测试用之文档
  • 文档定义更简单,仅需有限的注解及 Jakarta 相关注解配合使用即可, 其他扩展文档见 smart-doc

如何使用

  • 在项目中添加 plugin 配置,这里仅以 maven 项目实例
<!--文档工具-->
<plugin>
<groupId>com.ly.smart-doc</groupId>
<artifactId>smart-doc-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<!--配置文件位置-->
<configFile>./src/main/resources/smart-doc.json</configFile>
<!--<projectName>${application.name}</projectName>-->
<!--<configFile>${application.name}</configFile>-->
</configuration>
<!--项目编译时执行生成html不需要可以去掉executions标签-->
<executions>
<execution>
<!--打包的时候构建文档(install package)-->
<phase>package</phase>
<goals>
<!--adoc文档,后续用asciidoc生成html单文档-->
<goal>adoc</goal>
<!--构建文档类型 -->
<!--api只构建html文档-->
<!--<goal>html</goal>-->
<!--统一接口只构建adoc文档-->
<!--<goal>rpc-adoc</goal>-->
</goals>
</execution>
</executions>
</plugin> <!--文档工具:用于将smart-doc生成的adoc文件转换为html文档-->
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>1.5.8</version>
<configuration>
<!--预构建文档目录-->
<sourceDirectory>./adoc</sourceDirectory>
<!--文档输出目录-->
<outputDirectory>./doc</outputDirectory>
<headerFooter>true</headerFooter>
<doctype>book</doctype>
<backend>html</backend>
<sourceHighlighter>coderay</sourceHighlighter>
<attributes>
<!--菜单栏在左边-->
<toc>left</toc>
<!--多标题排列-->
<toclevels>3</toclevels>
<!--自动打数字序号-->
<sectnums>true</sectnums>
</attributes>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>process-asciidoc</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 文档工具结束-->

plugin在多模块项目中表现为:

  • 在项目中定义 smart-doc.json 配置文件,一般在 resources 目录下
  {
"outPath":"adoc",
"allInOne":true,
"allInOneDocFileName":"mee_admin-1.0.1",
"projectName":"mee_admin",
"createDebugPage":true,
"revisionLogs":[
{
"version":"2025-06-26",
"author":"shadow",
"revisionTime":"2025-06-26 19:28:18",
"status":"1.0.1",
"remarks":"接口及文档优化"
}
]
}

这个 smart-doc.jsonplugin 中有引用,相对地址不要弄错了

  • ideamaven 面板依次操作=>生成单html文档文件

使用技巧及注意事项

  • 字段的注释不可以含有竖杠(eg: | ), 可能造成文档出现偏移
// eg:
/**
* 菜单类型(1.目录 | 2.菜单 | 3.按钮)
*/
private Integer type;
  • 入口注释字段 @param 的值不可为空, 可导致无法生成文档
   // eg:
/**
* 系统::文件管理::删除
* @param status 状态
* @param
*/
@RequiresPermissions("sys:sys_file:delete")
@DeleteMapping("/delete")
@ResponseBody
public MeeResult<Integer> deleteById(@RequestParam(required = true) String id,@RequestParam(required = true) String status){
return sysFileService.deleteById(id,status);
}
  • smart-doc 强烈推荐使用 3.1.x 以上的版本,若使用 3.1.x 以下版本 多个 @RequestHeader 时生成的文档会出现行偏移
  // eg:
@RequiresPermissions("sys:sys_file:delete")
@DeleteMapping("/delete")
@ResponseBody
public MeeResult<Integer> deleteById(@RequestHeader String aa ,@RequestHeader String status){
return sysFileService.deleteById(id,status);
}
  • 一定要注意xml配置的目录或文件的位置



  • 生成的jmeter文档不可避免的会出现打不开的问题,一般来是注释含有
    或者 数字或布尔默认值问题,此类问题建议按提示的行数 修改 jmx 内对应的行即可

  • 具体配置参见smart-doc官方文档

文档生成效果

  • html 文档

  • jmeter 文档

  • word 文档

好用的文档工具👉smart-doc的更多相关文章

  1. Javascript自动化文档工具JSDuck在Windows下的使用心得

    作者: zyl910 一.工具比较 为了让前端JavaScript程序更具可维护性,更利于团队开发,文档非常重要.此时便需要使用自动化文档工具了. 我对比了各种JavaScript自动化文档工具,发现 ...

  2. 如何写Java文档注释(Java Doc Comments)

    本文翻译自How to Write Doc Comments for the Javadoc Tool,但是精简了一些私以为不重要的东西 本文不讨论如何使用javadoc工具自动生成文档的方法,而是主 ...

  3. 生成chm文档工具- Sandcastle -摘自网络

    Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...

  4. API文档工具-Swagger的集成

    最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...

  5. Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2

    1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...

  6. JavaScript(3)——文档工具

    文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC  HTML 推荐浏览器: Chrome浏览器(有丰 ...

  7. ShowDoc,APIDoc,可道云API,语雀-适合IT企业的文档工具

    ShowDoc,APIDoc,可道云API,语雀-适合IT企业的文档工具 一.ShowDoc官方文档及说明 1.1 它可以用来做什么 1.2 它都有些什么功能 1.3 使用在线的ShowDoc 1.4 ...

  8. 开源API文档工具- swagger2 与 smart-doc 比较 与 使用

    工具开源地址 swagger2 : https://swagger.io/ smart-doc: https://www.oschina.net/p/smart-doc  国产 两者的比较 swagg ...

  9. 【Lua】LDoc生成Lua文档工具的使用

    参考资料: http://my.oschina.net/wangxuanyihaha/blog/188909   LDoc介绍:     LDoc是一个Lua的文档生成工具,过去,比较常用的Lua生成 ...

  10. Java非侵入式API接口即文档工具apigcc

    一个非侵入的api编译.收集.Rest文档生成工具.工具通过分析代码和注释,获取文档信息,生成RestDoc文档 前言 程序员一直以来都有一个烦恼,只想写代码,不想写文档.代码就表达了我的思想和灵魂. ...

随机推荐

  1. Python+硅基流动API实现小说转有声读物

    一.注册硅基流动账号获取文本转语音api 1.注册登录硅基流动 注册.登录硅基流动 查看apikey 查看赠送的免费额度 点击文档中心 2.查看文本转语音api 查看文本转语音api 查看api使用指 ...

  2. SQL Server 查看版本信息

    SQL Server 查看版本信息3种方法: 1) 使用命令行查看 [Win + R]键 -> 打开cmd 2) 使用SSMS查看 打开并连接SSMS后查看 3) 通过服务器属性查看 使用SSM ...

  3. Flowable快速入门

    flowable官方文档       官网:https://tkjohn.github.io/flowable-userguide/#_getting_started 工作流(Workflow),是& ...

  4. eclipse安装OpenExplorer插件--快速打开文件目录

    eclipse安装OpenExplorer插件--快速打开文件目录功能: 1.下载: github: 下载地址:https://github.com/samsonw/OpenExplorer/down ...

  5. 119K star!无需GPU轻松本地部署多款大模型,DeepSeek支持!这个开源神器绝了

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "只需一行命令就能在本地运行Llama 3.DeepSeek-R1等前沿大模型,支 ...

  6. 第六章: SEO与交互指标 二

    上一篇文章地址 5. 提升用户参与度 提高用户参与度不仅有利于SEO,还能增加转化率和用户留存. 5.1 内容结构优化 使用吸引人的标题和小标题: 使用数字列表.问题形式或"如何" ...

  7. Razor路由相关

    1.赋予参数 @page "{id}" @model RazorTest.Pages.TestBModel @{ } <p>TestBId is @Model.Test ...

  8. C#判断当前时间是否在规定时间段范围内(二维数组超简版)

    直接上C#代码 TimeSpan nowTime = DateTime.Now.TimeOfDay; string[,] arr = { { "7:50", "8:10& ...

  9. L3-4、让 Prompt 更聪明:调试技巧与智能问答系统实战

    让 Prompt 更聪明:调试技巧与智能问答系统实战 在大语言模型(LLM)应用开发中,Prompt 工程是核心技能.本文将系统介绍 Prompt 调试技巧,并通过构建一个实用的 FAQ 问答机器人, ...

  10. css样式修改-悬浮数字

    代码实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...