一、前言
PlantUML是软件开发过程中的一种常用文本绘图工具,其使用纯文本定义图形结构,并依此绘制对应的图形。在绘制PlantUML的过程中,无需拖拽图形组件、手动维护组件之间的连接关系。
PlantUML支持绘制所有的UML图,如:序列图、用例图、活动图等,也支持绘制部分常用的非UML图,如:思维导图、实体关系图等。
二、PlantUML的基本使用
PlantUML可以使用多种方式完成绘图:
使用
PlantUML Server
:PlantUML官方提供了便捷的Online Server,离线环境下也可以在本地安装PlantUML Server
(docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
,详见官网)使用VSCode或IDEA的PlantUML插件:在VSCode或IDEA的插件市场搜索
PlantUML
,安装并使用对应插件完成PlantUML
绘图。使用Java代码绘制PlantUML:PlantUML是基于Java开发的,其提供了
plantuml.jar
包,可以直接在Java中调用PlantUML组件实现绘图。详见后文。
三、使用Java代码绘制PlantUML
使用Java代码绘制PlantUML可以在自动化生成图形等场景发挥作用,如:动态分析Java代码结构并生成调用关系图。
在pom.xml
中引入plantuml
包:
<dependency>
<groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId>
<version>1.2023.12</version>
</dependency>
新增PlantUmlRenderer
类:
import net.sourceforge.plantuml.SourceStringReader;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
public class PlantUmlRenderer {
public void render(String source, String filename) {
System.out.println("PlantUML源码:" + source);
SourceStringReader reader = new SourceStringReader(source);
try {
OutputStream os = Files.newOutputStream(Paths.get(filename));
reader.outputImage(os);
} catch (Exception e) {
System.out.println("PlantUML渲染失败:" + e);
}
}
}
调用上述PlantUmlRenderer
类的render
方法:
import org.junit.Test;
public class PlantUmlRendererTest {
private final PlantUmlRenderer plantUmlRenderer = new PlantUmlRenderer();
@Test
public void render() {
plantUmlRenderer.render(genSource(), "PlantUML.png");
}
private String genSource() {
return "@startuml\n" +
"Tom -> Jerry : hello\n" +
"@enduml";
}
}
执行单元测试,在根目录查看生成的PlantUML.png
文件,如下所示:
@startuml
Tom -> Jerry : hello
@enduml
参考文档