最近換了個地兒,筆記本也換了,工做須要畫個架構圖,一時間沒啥畫圖工具可用(安裝受限),倒騰着想借助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步驟不變便可,(親測可行)。