最近换了个地儿,笔记本也换了,工做须要画个架构图,一时间没啥画图工具可用(安装受限),倒腾着想借助IDEA插件plantUML来完成,想来这种编程式的画图一个显得专业,二个是基于代码式的复用性好,画很少说,踩坑开始~~~html
主要涉及如下几个步骤:
略
)略
)
java版本
$ java -version java version "1.8.0_181"
IDEA版本(经过Help->About查看)
IntelliJ IDEA 2020.1 (Community Edition)
IDEA选择File->settings->plugins
而后在搜索框中输入plantUML
进行搜索,而后点击PlantUML integration插件的Install
,点击Restart IDE
完成安装。java
不安装graphviz
只能生成uml sequence
类型的图片,生成其它类型图片时会报以下错误:
安装后能够渲染其它uml类型的图片,如咱们的archimate格式。git
D:\dev-envirment-setup\graphviz-2.38\
目录GRAPHVIZ_DOT
dot.exe
:测试是否配置成功:在IDEA中建立test.puml文件,并输入如下内容github
@startuml testdot @enduml
点击IDEA右侧的plantUML
会显示以下图右边内容,证实安装成功:shell
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
以下segmentfault
@startuml !include d:/git/C4-plantUML/C4_Container.puml 'LAYOUT_WITH_LEGEND() LAYOUT_AS_SKETCH() Person(user,"用户") @enduml
运行报错:windows
报错缘由是由于C4-plantUML代码中引用了网络资源bash
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步骤不变便可,(亲测可行)。