idea集成plantUML+C4-Model编写架构图

引言

  最近换了个地儿,笔记本也换了,工做须要画个架构图,一时间没啥画图工具可用(安装受限),倒腾着想借助IDEA插件plantUML来完成,想来这种编程式的画图一个显得专业,二个是基于代码式的复用性好,画很少说,踩坑开始~~~html

环境搭建

主要涉及如下几个步骤:
  • 安装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完成安装。
plantUML安装图片java

安装graphviz工具

  不安装graphviz只能生成uml sequence类型的图片,生成其它类型图片时会报以下错误:image.png
安装后能够渲染其它uml类型的图片,如咱们的archimate格式。git

  1. 下载graphviz-2.38.zip至本地;
  2. 解压到本地目录,我这里是D:\dev-envirment-setup\graphviz-2.38\目录
  3. 设置环境变量GRAPHVIZ_DOTimage.png
  4. IDEA plantUML插件配置graphviz的执行文件dot.exe:image.png
  5. 至此graphviz安装配置完成;
  6. 测试是否配置成功:在IDEA中建立test.puml文件,并输入如下内容github

    @startuml
    testdot
    @enduml

    点击IDEA右侧的plantUML会显示以下图右边内容,证实安装成功:
    image.pngshell

集成C4-plantUML

  1. 下载C4-plantUML;考虑到网速问题,这里我选择国内的镜像地址C4-plantUML from gitee,git-bash.exe克隆镜像到本地/d/git/C4-PlantUML编程

    git clone https://gitee.com/mirrors/C4-PlantUML.git
  2. 编写示例代码C4-test.puml以下segmentfault

    @startuml
    
    !include d:/git/C4-plantUML/C4_Container.puml
    'LAYOUT_WITH_LEGEND()
    LAYOUT_AS_SKETCH()
    Person(user,"用户")
    @enduml

    运行报错:
    C1B8E533-9CBD-4d59-B9D4-5A105ED5F317.pngwindows

  3. 报错缘由是由于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,每一个文件将第一行使用'注释掉,将第三行的注释'删除掉,保存便可,图形显示成功:
    image.png
    从新运行image.png网络

  4. 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()后中文显示正常:
    image.png
    可是我就是想要这种效果怎么办?咱们来看看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,那我就试试本身定义一个看看行不行,image.png
    事实证实彻底可行,后面就能够用这个画图了,高兴~~~

延伸

在搜索解决办法的过程当中,发现·vscode·也有对应的插件,将IDEA对应的plantUML插件替换为vscode中的PlantUML+Graphviz Preview,其它与IDEA步骤不变便可,(亲测可行)。

参考资料

相关文章
相关标签/搜索