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步驟不變便可,(親測可行)。

參考資料

相關文章
相關標籤/搜索