# go-plantuml **Repository Path**: Ljolan/go-plantuml ## Basic Information - **Project Name**: go-plantuml - **Description**: go项目uml生成工具 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-08-18 - **Last Updated**: 2024-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #go-plantuml # 使用 ## 编译放到gopath的bin > go build -o ../../bin/plantuml.exe main.go ## 通过plantuml.jar与上面生成的plantuml.exe处理工程 > plantuml --pg="工程文件夹名称" --gopath="E:\GoWork,GOPATH路径" --svgjar="plantuml.jar路径" > > 指定pg=工程文件夹相对gopath的路径,codedir=代码实际路径,gopath=GoPath, svgjar=plantuml.jar路径 ignoredir=忽略的路径,默认添加了vendor和proto目录 ``` plantuml --pg="server\common" --codedir="E:\GoWork\src\server\common" --gopath="E:\GoWork" --svgjar="E:\GoWork\src\plantuml.jar" --ignoredir="E:\GoWork\src\server\common\presentation" ``` > ## 批量执行指令 > 先创建一个txt文件,最好不用中文名称和路径 > 放入要批量执行的指令集,一行一条指令 ``` plantuml --pg="pg1" --gopath="E:\GoWork" --svgjar="E:\GoWork\src\plantuml.jar" --outputfile="C:\Users\admin\Desktop\pg1.puml" plantuml --pg="pg2" --gopath="E:\GoWork" --svgjar="E:\GoWork\src\plantuml.jar" --outputfile="C:\Users\admin\Desktop\pg2.puml" plantuml --pg="tong\pg3" --codedir="E:\GoWork\src\tong\pg3" --gopath="E:\GoWork" --svgjar="E:\GoWork\src\plantuml.jar" --outputfile="C:\Users\admin\Desktop\tong\pg3.puml" plantuml --pg="tong\pg4" --codedir="E:\GoWork\src\tong\pg4" --gopath="E:\GoWork" --svgjar="E:\GoWork\src\plantuml.jar" --outputfile="C:\Users\admin\Desktop\tong\pg4.puml" ``` > 然后在cmd中执行 `plantuml --pcmd="C:\Users\admin\Desktop\uml.txt"` > 等待他完全执行,会打印over结束 > 打开生成的svg文件,如图所示: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/122639_39ec1570_3048600.png "aaaC.png") ## 缺陷 复杂的继承、实现可能无法生成连线 比如: ``` type Client interface { QueryUserInfoByUID(uid string) (*value.UserInfo, error) QueryUserInfoByAccount(account string) (*value.UserInfo, error) } type Account interface { Client // 下面两个方法是Client的 QueryUserInfoByUID(uid string) (*value.UserInfo, error) QueryUserInfoByAccount(account string) (*value.UserInfo, error) GetRegisterTypeMap() map[int]string GetAccountStatusMap() map[int]string } type AccountImpl struct { Client client xx.RoleClient } // 只实现Account中的非Client的方法 func (v AccountImpl) GetRegisterTypeMap(account string) (*value.UserInfo, error){ ... } func (v AccountImpl) QueryUserInfoByUID(uid string) (*value.UserInfo, error){ ... } ``` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0825/122355_da36496c_3048600.png "8BA4BF08-B4CE-468f-86C9-20A59A9DD97B.png")