一种基于 C4 模型思路的架构建模语言与工具链,可从代码生成实时更新的架构图。
- Star
- 7,441
- Fork
- 1,168
- 未关闭 Issue
- 0
- 最近提交
- 9天前
这是什么?
C4-PlantUML 是一组实现 C4 软件架构模型的 PlantUML 宏和构造型(stereotype)。无需手动拖拽图形,只需在简短的文本文件中描述人员、系统、容器、组件和部署节点,PlantUML 即可渲染出架构图,便于与代码一起做版本管理和评审。
该库按图类型提供不同的引入文件,覆盖系统上下文图、容器图、组件图、动态图、部署图以及 C4 风格的时序图。每类图都包含常用元素宏、外部元素、数据库与消息队列、边界以及可指定方向的关系宏,同时支持图标(sprite)、元素链接、自定义标签并自动生成图例,还提供布局选项。
项目跨平台且开源,附带 VS Code 代码片段和 IntelliJ 实时模板。图可以通过本地 PlantUML jar 或 PlantUML 在线服务渲染,库文件既可以从仓库地址引入,也可以使用 PlantUML 标准库中自带的版本。
核心功能
- 01为系统、容器、组件、动态、部署及 C4 风格时序图提供专用宏。
- 02支持人员、系统、容器、数据库、消息队列及外部元素等类型。
- 03提供可指定方向的关系宏和边界分组。
- 04支持图标、元素链接,以及带自动生成图例的自定义标签。
- 05提供 VS Code 代码片段和 IntelliJ 实时模板。
适用场景
- 在前期架构设计讨论中记录软件架构。
- 将架构图与其描述的代码一同存放在同一仓库中维护。
- 向非技术干系人说明系统上下文和容器结构。
快速上手
- 1
在 .puml 文件中引入 C4_Container 库
!include <C4/C4_Container> - 2
在 @startuml/@enduml 之间用纯文本编写 C4 元素和关系
- 3
使用 PlantUML 渲染图表,例如通过 jar 文件
java -jar plantuml.jar -DRELATIVE_INCLUDE="." ...
使用前须知
- 渲染图表需要 PlantUML 环境,因此需要 Java 或 PlantUML 服务器才能查看。
标签
常见问题
- C4-PlantUML 是什么?
- 基于 PlantUML 的 C4 模型宏库,用纯文本代码绘制软件架构图。 C4-PlantUML 是一组实现 C4 软件架构模型的 PlantUML 宏和构造型(stereotype)。无需手动拖拽图形,只需在简短的文本文件中描述人员、系统、容器、组件和部署节点,PlantUML 即可渲染出架构图,便于与代码一起做版本管理和评审。
- C4-PlantUML 可以免费使用吗?用的什么许可证?
- C4-PlantUML 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- C4-PlantUML 还在维护吗?
- 活跃维护中。C4-PlantUML 最近一次提交是在 2026年10月13日。
- C4-PlantUML 适合用来做什么?
- 在前期架构设计讨论中记录软件架构。 将架构图与其描述的代码一同存放在同一仓库中维护。 向非技术干系人说明系统上下文和容器结构。
- C4-PlantUML 怎么安装和运行?
- 在 .puml 文件中引入 C4_Container 库: !include <C4/C4_Container> 在 @startuml/@enduml 之间用纯文本编写 C4 元素和关系 使用 PlantUML 渲染图表,例如通过 jar 文件: java -jar plantuml.jar -DRELATIVE_INCLUDE="." ...
- 在哪里获取 C4-PlantUML?
- 源代码和安装说明在 GitHub 上:https://github.com/plantuml-stdlib/C4-PlantUML
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
5936405TypeScriptMIT更新于 19小时前
通过纯文本描述生成 UML 及其他类型的图表,支持时序图、类图、活动图等。
1.3万1240JavaLGPL-3.0更新于 15小时前
用 Python 代码绘制云和系统架构图,内置 AWS、Azure、GCP、Kubernetes 等服务图标。
4.3万2733PythonMIT更新于 5天前
一个智能体技能,可将自然语言及 Terraform、K8s、SQL、OpenAPI 等源码转换为可编辑的 draw.io 架构图。
1万712PythonMIT更新于 11天前
一个 AI 编程代理技能,让代理在改代码前把项目架构、约束和改动范围画成 HTML 图,经确认后再实施。
69175TypeScriptMIT更新于 13天前