PlantUML 的介绍和使用
在学习《大话设计模式》时,需要绘制类图,正好团队最近在开始使用 PlantUML,于是便来学习使用一下。在这里对我所了解的内容做一个简单的梳理和记录。
本文会包含 PlantUML 的一个简单的介绍,PlantUML 的一些特点和 PlantUML 的安装和使用。
1. 什么是 PlantUML
PlantUML 是一个开源工具,能让你通过纯文本的方式来生成 UML 图(Unified Model Language 统一建模语言)。这与大家较为熟悉的 Markdown 非常类似。
通过 PlantUML,你可以通过同一套 Scheme 但是不同的语法来描述和生成不同类型的图。除了 UML 图外,PlantUML 也支持思维导图、甘特图等。我在这里会通过 PlantUML 来绘制类图、流程图和思维导图,具体的内容在官方文档有较为详细的描述。(这里要吐槽一下官网,在文档中穿插了太多的广告,比较影响阅读。)
先来看一个简单的官方给的示例,对 PlantUML 有一个直观的了解:
2. 为什么要用 PlantUML
这里主要是通过罗列 PlantUML 的一些特点,来阐述为什么要使用 PlantUML。
版本控制
最重要的一点是 PlantUML 是类似于 Markdown 一样,通过纯文本的方式来编写的。这样,我们就可以通过 Git 这一类的版本管理工具对 UML 图进行管理,并且在不同的版本之间,能看到具体的变化。这非常有利于团队间的合作,这也是我们团队开始使用 PlantUML 的首要原因。
排版
PlantUML 提供一个自动排版的功能,这能让你只需关注部件本身以及它们之间的关系,而不用花时间在版式上。这也是 PlantUML 对比一些常见的所见即所得的 UML 绘图工具的优势。
当然,这也可以看作是 PlantUML 的一个缺点,因为不能生成出「漂亮」的 UML 图。
共享
PlantUML 提供一个官方的 Server 来托管 UML 图,你可以通过这种方式较为方便的分享。这里说的托管,其实并不是真正意义上的托管,PlantUML Server 本身是不存储这些图片的,因为通过 PlantUML 生成的内容都是编码压缩并记录到URL上去了,当服务器接收到 URL 时,会对其进行解压并提取图的文本来生成对应的图片。
比如,上面提到的官方提供的示例的分享链接是这样的,http://www.plantuml.com/plantuml/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
,你可以将 plantuml/svg
替换为 plantuml/uml
来查看详细的定义。
另外,PlantUML 的语法具有很强的可扩展性,你还可以增加一些特殊的字符来给生成的图增加颜色、icon 等。Andreas 在 ultimate PlantUML Cheatsheet 里列出来了一些 PlantUML 基础语法外的技巧。
3. 怎么使用 PlantULML
使用 PlantUML 最快速的方式还是通过 PlantUML 的在线编辑器来编写和生成 UML 图,但这里可能在处理复杂的 UML 图时存在一些限制。
本地部署
PlantUML 依赖于Java 和 Graphviz ,在本地使用必须要安装这两个依赖。
macOS 的安装可以通过以下命令行来完成:
在安装 Graphviz 时可能会需要升级 XCode。
在 Windows 下,Graphviz 的安装也不是那么顺利,如果你参考的是官网的 Download 帮助文档的话,里面提供的是源代码,而不是典型的 Windows 安装包。在 Ben 的帮助下通过VSCode+PlantUML画图前配置环境_YDDUONG的博客-CSDN博客找到了一个安装包地址:https://graphviz.gitlab.io/pages/Download/Downloadwindows.html
PlantUML 支持的纯文本的后缀有很多种,常见的是*.puml
, *.txt
, *.wsd
, *.iuml
等。
plantuml.jar
要查看或生成 UML 图,只需下载 plantuml.jar 并使用即可(在选择文件夹后,会自动将该文件夹下的 PlantUML 文件生成图片。
VS Code 插件
如果你也使用 VS Code 的话,可以通过PlantUML插件 来在 VS Code 中对 PlantUML 进行实时的预览。
在 VS Code 中安装 PlantUML 插件后,还可以设置是使用 PlantUMLServer 还是 Local。
下图是我在 VS Code 中编写的 UML 类图:
参考
版权声明: 本文为 InfoQ 作者【Puran】的原创文章。
原文链接:【http://xie.infoq.cn/article/58d194bae05d6c845ebdbba7e】。文章转载请联系作者。
评论