画UML图试过多种软件,适合团队共同创作的还是PlantUML,主要原因是载体不是二进制文件,更容易被git托管,查看变更历史。
当然也存在一定的缺点,比如自动生成的排版不一定符合预期,但通过一些隐藏线条还是可以做一些局部版式调整,需要精细调整style的还是推荐用draw.io
这里记录一些常见问题的解法和好用的技巧,常用图的语法可以参考官方文档,这里不再列出。
更好看的样式
PlantUML默认样式比较古板,可以试下这个样式,更贴近现代,链接,使用很简单,通过include命令来引用
@startuml
!include https://unpkg.com/plantuml-style-c4@latest/core.puml
' uncomment the following line and comment the first to use locally
'!include core.puml
@enduml
定义统一样式
有时很多模块用的统一的样式,可以通过define命令定义变量,之后用 变量 替代,后续样式修改,也只需要改定义的变量,define的语法类似C语言
' 定义统一的蓝色card
!define bluec card #blue
' 这里使用
bluec "test"
通过隐藏线排版
在线中添加 hidden,可以隐藏线条,调整排版样式
rectangle A as a #lightyellow {
}
rectangle B as b {
}
' 线 隐藏
a -[hidden]-|> c
注释
单行注释为 单引号开头
多行注释为 斜杠组合单引号
' 多行注释
/'
comments
of
multiline
'/
生成超大图
有的时候代码太多,会发现生成的图片只有一半,因为plantUML默认限制宽度和高度为4096
可以设置环境变量 PLANTUML_LIMIT_SIZE ,指定更大的值
- 设置操作系统的环境变量 PLANTUML_LIMIT_SIZE
- IDEA的PlantUML插件,可以在Settings->PlantUML->PLANTUML_LIMIT_SIZE 调整
- 通过调用代码生成的话,可以在运行参数上加 -DPLANTUML_LIMIT_SIZE=100000 ,图片过大还需要调整堆大小,如下
-DPLANTUML_LIMIT_SIZE=100000 -Xmx8096m
通过API生成图片
依赖的jar包
示例代码
import java.io.OutputStream;
import net.sourceforge.plantuml.SourceStringReader;
try {
//源码
String umlSource = "xxxxx";
// 需要生成的图片文件路径
String outputFileName = "xxxxx";
OutputStream png = new FileOutputStream(outputFileName);
SourceStringReader reader = new SourceStringReader(umlSource);
reader.generateImage(png);
System.out.println("Output UML Class diagram with name '" + outputFileName + ".png' is generated in base directory");
} catch (Exception e) {
System.err.println("Failed to create output file");
e.printStackTrace();
}