引言
最近换了个地儿,笔记本也换了,工作需要画个架构图,一时间没啥画图工具可用(安装受限),倒腾着想借助IDEA插件plantUML来完成,想来这种编程式的画图一个显得专业,二个是基于代码式的复用性好,画不多说,踩坑开始~~~
环境搭建
主要涉及以下几个步骤:
- 安装java(
略
) - 安装idea(
略
) - 安装plantUML插件
- 安装graphviz工具
- 集成C4-plantUML
java版本
$ java -version
java version "1.8.0_181"
IDEA版本(通过Help->About查看)
IntelliJ IDEA 2020.1 (Community Edition)
IDEA安装plantUML插件
IDEA选择File->settings->plugins
然后在搜索框中输入plantUML
进行搜索,然后点击PlantUML integration插件的Install
,点击Restart IDE
完成安装。
安装graphviz工具
不安装graphviz
只能生成uml sequence
类型的图片,生成其它类型图片时会报如下错误:
安装后可以渲染其它uml类型的图片,如我们的archimate格式。
- 下载graphviz-2.38.zip至本地;
- 解压到本地目录,我这里是
D:\dev-envirment-setup\graphviz-2.38\
目录 - 设置环境变量
GRAPHVIZ_DOT
- IDEA plantUML插件配置graphviz的执行文件
dot.exe
: - 至此graphviz安装配置完成;
-
测试是否配置成功:在IDEA中创建test.puml文件,并输入以下内容
@startuml testdot @enduml
点击IDEA右侧的
plantUML
会显示如下图右边内容,证明安装成功:
集成C4-plantUML
-
下载C4-plantUML;考虑到网速问题,这里我选择国内的镜像地址C4-plantUML from gitee,git-bash.exe克隆镜像到本地
/d/git/C4-PlantUML
git clone https://gitee.com/mirrors/C4-PlantUML.git
-
编写示例代码
C4-test.puml
如下@startuml !include d:/git/C4-plantUML/C4_Container.puml 'LAYOUT_WITH_LEGEND() LAYOUT_AS_SKETCH() Person(user,"用户") @enduml
运行报错:
-
报错原因是因为C4-plantUML代码中引用了网络资源
Must@/d/git/C4-PlantUML>grep "githubusercontent" *.puml C4_Component.puml:!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml C4_Container.puml:!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml C4_Context.puml:!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4.puml
这个时候莫慌,做着已经考虑到了这个问题,只需要对这几个文件稍加修改即可,vi打开对应的三个文件
vi C4_Container.puml C4_Context.puml C4_Component.puml
,每个文件将第一行
使用'
注释掉,将第三行
的注释'
删除掉,保存即可,图形显示成功:
重新运行 -
But,我写的
用户
两个字怎么乱码了,这个可咋办?
网上有人说使用使用java -jar plantuml.jar -charset utf-8 C4-test.puml
,即导出时添加-charset utf-8
来改变字符集,我们来试试a) 找到plantuml.jar所在位置,idea新版plugins存放更换了位置到 /c/Users/DELL/AppData/Roaming/JetBrains/IdeaIC2020.1/plugins/plantuml4idea/lib>ls plantuml.1.2020.9.jar plantuml4idea.jar b) 执行java -jar plantuml.1.2020.9.jar -charset UTF-8 C4-test.puml c) 查看C4-test.png文件,然并没有解决乱码问题!!!
后来发现注释掉
LAYOUT_AS_SKETCH()
后中文显示正常:
但是我就是想要这种效果怎么办?我们来看看LAYOUT_AS_SKETCH是个啥玩意儿?
查找LAYOUT_AS_SKETCH位置:
Must@/d/git/C4-PlantUML>grep -n LAYOUT_AS_SKETCH *.puml|grep define
C4.puml:46:!definelong LAYOUT_AS_SKETCH #C4.puml文件的第46行
输出46行下的部分内容:
Must@/d/git/C4-PlantUML>sed -n '46,60p' C4.puml
!definelong LAYOUT_AS_SKETCH skinparam backgroundColor #EEEBDC skinparam handwritten true skinparam defaultFontName "Comic Sans MS" center footer <font color=red>Warning:</font> Created for discussion, needs to be validated !enddefinelong !define LAYOUT_TOP_DOWN top to bottom direction !define LAYOUT_LEFT_RIGHT left to right direction ' Boundaries ' ################################## !define Boundary(e_alias, e_label) rectangle "==e_label" <<boundary>> as e_alias !define Boundary(e_alias, e_label, e_type) rectangle "==e_label\n<size:TECHN_FONT_SIZE>[e_type]</size>" <<boundary>> as e_alias Must@/d/git/C4-PlantUML>
发现没有,里面有一句
skinparam defaultFontName "Comic Sans MS"
引起了我的注意:现在要么我把这个改掉,要么我照着再自己定义一个LAYOUT_AS_SKETCH,那我就试试自己定义一个看看行不行,
事实证明完全可行,后面就可以用这个画图了,高兴~~~
延伸
在搜索解决办法的过程中,发现·vscode·也有对应的插件,将IDEA对应的plantUML
插件替换为vscode中的PlantUML+Graphviz Preview
,其它与IDEA步骤不变即可,(亲测可行)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。