目录

摘要

一、安装 PlantUML 插件

二、配置 PlantUML 运行环境

三、创建 PlantUML 文件

四、编写 PlantUML 代码

五、生成并查看图表

六、自动生成类图(重点新增)

6.1 从 Java 类生成类图

6.2 类图语法详解

6.3 类图高级技巧

七、常见问题及解决方案

八、进阶技巧

总结


摘要

本文详细介绍了如何在 IntelliJ IDEA 中文版环境中安装和使用 PlantUML 插件,通过图文结合的方式,帮助零基础用户快速掌握 UML 图表的创建方法。内容涵盖插件安装、环境配置、文件创建、代码编写、图表生成等核心步骤,并针对常见问题提供解决方案。特别新增了 "自动生成类图" 的详细教程,帮助用户通过 Java 代码快速生成 UML 类图。

一、安装 PlantUML 插件
  1. 打开插件市场
    点击菜单栏「文件」→「设置」(Windows/Linux)或「IntelliJ IDEA」→「偏好设置」(Mac),进入「插件」页面。
  2. 搜索并安装
    在搜索框输入「PlantUML integration」,点击「安装」按钮,安装完成后重启 IDEA。
二、配置 PlantUML 运行环境
  1. 进入配置页面
    重启后,再次打开「设置」→「工具」→「PlantUML」。
  2. 选择运行方式
    • 本地方式:若已下载 PlantUML.jar 文件,点击「...」按钮选择文件路径。
    • 在线方式:勾选「Use online server」,通过网络生成图表(需确保网络畅通)。
三、创建 PlantUML 文件
  1. 新建项目或打开已有项目
    可选择「空项目」或「Java 项目」,本文以空项目为例。
  2. 创建 PUML 文件
    在项目目录右键→「新建」→「文件」,命名为demo.puml(后缀必须为.puml.plantuml)。
四、编写 PlantUML 代码

demo.puml文件中输入以下示例代码(以序列图为例):

plantuml

@startuml
actor 用户
participant 系统
用户 -> 系统: 发送请求
系统 --> 用户: 返回响应
@enduml

语法说明

  • @startuml@enduml:标识图表开始和结束
  • actor:定义参与者(如用户、系统)
  • ->-->:表示消息流向(实线为请求,虚线为响应)
五、生成并查看图表
  1. 触发图表生成
    在代码编辑区右键→「Diagrams」→「Show Diagram」(快捷键:Ctrl+Shift+U)。
  2. 查看与操作图表
    在弹出的窗口中可查看生成的 UML 图,支持缩放、拖动、导出为图片等操作。
六、自动生成类图(重点新增)
6.1 从 Java 类生成类图
  1. 准备 Java 类文件
    在项目中创建或打开一个 Java 类,例如:

    java

    package com.example;public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
    }
    
  2. 生成 PlantUML 代码
    在 Java 类编辑区右键→「Diagrams」→「Show PlantUML Diagram」。
  3. 查看生成的代码
    IDEA 会自动创建一个.puml文件并填充类图代码:

    plantuml

    @startuml
    class User {- String name- int age+ User(String name, int age)+ String getName()+ void setName(String name)
    }
    @enduml
    
6.2 类图语法详解
  • 类定义class 类名 { ... }
  • 访问修饰符-(private)、#(protected)、+(public)
  • 属性和方法类型 名称 或 返回类型 方法名(参数)
  • 关系表示

    plantuml

    @startuml
    class User {+ String name
    }class Order {+ int orderId
    }// 关联关系
    User "1" -- "*" Order : 拥有// 继承关系
    class VIPUser extends User {+ String vipLevel
    }// 实现接口
    interface Payable {+ void pay()
    }Order implements Payable
    @enduml
    
6.3 类图高级技巧
  • 隐藏属性和方法

    plantuml

    @startuml
    class User <<hide all>> {+ String name+ void showInfo()
    }
    @enduml
    
  • 自定义样式

    plantuml

    @startuml
    skinparam class {BackgroundColor LightBlueBorderColor BlueArrowColor Red
    }class User {+ String name
    }
    @enduml
    
七、常见问题及解决方案
  1. 插件未显示
    • 检查插件是否正确安装并启用
    • 尝试重启 IDEA 或清除缓存(「文件」→「Invalidate Caches」)
  2. 图表不显示
    • 检查代码语法是否正确(如括号是否配对、箭头方向是否正确)
    • 尝试简化代码,逐步添加元素排查问题
    • 确认 PlantUML 运行环境配置无误
  3. 类图生成失败
    • 确保 Java 类没有编译错误
    • 在「设置」→「工具」→「PlantUML」中启用「Generate diagram automatically」
八、进阶技巧
  1. 实时预览
    安装「PlantUML Preview」插件,实现代码编辑时的实时图表预览。
  2. 导出图表
    在图表窗口右键→「Export Diagram」,支持 PNG、SVG、PDF 等格式。
总结

通过以上步骤,您可以在 IDEA 中高效使用 PlantUML 创建各种 UML 图表。建议从简单的序列图、类图开始练习,逐步掌握更多语法和技巧。遇到问题时,可查阅PlantUML 官方文档获取更多帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88305.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88305.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88305.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创客匠人:创始人 IP 打造中 “放下身段” 的深层逻辑

在 IP 经济火热的当下&#xff0c;无数创始人投身 IP 打造&#xff0c;却鲜少有人意识到&#xff1a;真正能实现 IP 变现的核心&#xff0c;并非专业知识的堆砌&#xff0c;而是与用户建立 “可交往” 的连接。创客匠人通过多年服务 IP 的实践发现&#xff0c;那些穿越周期的创…

C语言<数据结构-链表>

链表是一种常见且重要的数据结构&#xff0c;在 C 语言中&#xff0c;它通过指针将一系列的节点连接起来&#xff0c;每个节点可以存储不同类型的数据。相比数组&#xff0c;链表在插入和删除元素时不需要移动大量数据&#xff0c;具有更好的灵活性&#xff0c;尤其适合处理动态…

基于Matlab多特征融合的可视化指纹识别系统

针对中小规模&#xff08;百级&#xff09;指纹模板库中常见的脊线断裂、噪声干扰以及结果缺乏可解释性等难点&#xff0c;本文提出并实现了一种基于多特征融合的可视化指纹识别系统。系统整体采用模块化设计&#xff1a;在预处理阶段&#xff0c;先通过改进的灰度归一化与局部…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleVerticalSlider(双垂直滑块)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— DoubleVerticalSlider组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<scrip…

mysql join语句、全表扫描 执行优化与访问冷数据对内存命中率的影响

文章目录join执行逻辑Index Nested_Loop Join&#xff08;NLJ&#xff09;MMR(Mutli-Range Read) 优化BKA(Batched Key Access)算法Simple Nested_Loop JoinBlock Nested-Loop Join&#xff08;BLJ&#xff09;join buffer 一次放不下 驱动表join buffer优化的影响&#xff1a;…

【LeetCode100】--- 1.两数之和【复习回滚】

题目传送门 解法一&#xff1a;暴力枚举&#xff08;也是最容易想到的&#xff09; class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for(int i 0; i < n; i){for(int j i1; j<n; j){if(nums[i] nums[j] target){return new int…

opencv提取png线段

import cv2 import matplotlib.pyplot as plt import numpy as np# 读取图像 image cv2.imread(./data/1.png) if image is None:print("无法读取图像文件") else:# 转换为灰度图像gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用Canny边缘检测edges cv2.Can…

计算机网络:概述层---计算机网络概念解析

计算机网络的概念详解 &#x1f4c5; 更新时间&#xff1a;2025年07月6日 &#x1f3f7;️ 标签&#xff1a;计算机网络 | 网络基础 | 互联网 | TCP/IP | 路由器 文章目录前言一、计算机网络的发展历程二、什么是计算机网络&#xff1f;1. 计算机网络的基本功能2. 计算机网络的…

springMVC04-Filter过滤器与拦截器

一、Filter&#xff08;过滤器&#xff09;和 Interceptor&#xff08;拦截器&#xff09;在 SpringMVC 中&#xff0c;Filter&#xff08;过滤器&#xff09;和 Interceptor&#xff08;拦截器&#xff09;都是对请求和响应进行预处理和后处理的重要工具&#xff0c;但它们存在…

STM32第十九天 ESP8266-01S和电脑实现串口通信(2)

1&#xff1a;UDP 传输UDP 传输不不区分 server 或者 client &#xff0c;由指令 ATCIPSTART 建⽴立传输。 1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 响应 : OK 2. 连接路路由器器 ATCWJAP"SSID","password" // SSID and password of router 响…

大健康IP如何用合规运营打破“信任危机”|创客匠人

一、行业乱象下的信任裂痕当前大健康领域私域直播乱象频发&#xff0c;部分机构利用“假专家义诊”“限量抢购”等话术&#xff0c;将低成本保健品高价卖给老人&#xff0c;甚至有技术公司提供“全链路坑老方案”&#xff0c;加剧行业信任危机。这种短视行为不仅损害消费者权益…

MySQL(122)如何解决慢查询问题?

解决慢查询问题通常涉及到多种技术和方法&#xff0c;以确保数据库查询的高效性和响应速度。以下是详细步骤和示例代码&#xff0c;阐述如何解决慢查询问题。 一. 慢查询的常见原因 缺少索引&#xff1a;查询未使用索引或索引未优化。查询不当&#xff1a;查询语句本身书写不合…

esp32在vscode中仿真调试

此方法可以用在具有usb serial jtag功能的esp32芯片用&#xff0c;支持型号&#xff1a; ESP32-C3 ESP32-S3 ESP32-C6 ESP32-H2 ESP32-C5 USB Serial JTAG功能介绍&#xff1a; 从硬件角度&#xff1a; 它是ESP32芯片内置的硬件功能 不是一个独立的物理接口 是通过USB接口实…

蓝桥云课 矩形切割-Java

目录 题目链接 题目 解题思路 代码 题目链接 竞赛中心 - 蓝桥云课 题目 解题思路 找最大的正方形就是大边-n个小边&#xff0c;直至相等或者小于1 代码 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static voi…

PostgreSQL 锁等待监控,查找等待中的锁

直接贴SQLWITH RECURSIVE l AS (SELECT pid, locktype, mode, granted, ROW(locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid) objFROM pg_locks ), pairs AS (SELECT w.pid waiter, l.pid locker, l.obj, l.modeFROM l wJOIN l ON l.…

Elasticsearch 字符串包含子字符串:高级查询技巧

作者&#xff1a;来自 Elastic Justin Castilla 想要获得 Elastic 认证&#xff1f;看看下一次 Elasticsearch Engineer 培训什么时候开始吧&#xff01; Elasticsearch 拥有大量新功能&#xff0c;可以帮助你为你的使用场景构建最佳的搜索解决方案。深入了解我们的示例 noteb…

Vue、Laravel 项目初始化命令对比 / curl 命令/ CORS 机制总结与案例

前言一个疑问衍生出另一个疑问再衍生出又一个疑问&#xff0c;于是有了这篇文章。一、Vue 项目初始化命令 基于 Vite 创建 Vue 项目 命令&#xff1a;npm create vitelatest my-project -- --template vue适用场景&#xff1a;需轻量级、高速开发环境关键点&#xff1a;使用 Vi…

Jenkins 流水线配置

Jenkinsfile dsl文件:pipeline {// 指定任务在哪个集群节点执行agent any// 声明全局变量environment {keyvalueAPPLICATION_NAMEspringboot-demo // 项目名称HOST_PORT7777 // 宿主机暴露服务端口CONTAINER_PORT8080 // 容器内部服务端口…

服务器重装后如何“复活”旧硬盘上的 Anaconda 环境?—— 一次完整的排错与恢复记录

目录 摘要 一、 背景&#xff1a;熟悉的陌生人 二、 问题浮现&#xff1a;一次次失败的尝试 问题一&#xff1a;source activate 失效&#xff0c;被写死的旧路径 问题二&#xff1a;官方安装器修复失败&#xff0c;神秘的“进程池损坏” 问题三&#xff1a;核心脚本也“背…

Redis的多并发实际业务场景下的使用分析:布隆过滤器

文章目录前言什么是布隆过滤器项目中引入布隆过滤器与缓存结合的最佳实践场景&#xff1a;高并发用户访问商品详情页&#xff08;防止缓存穿透&#xff09;总结&#xff1a;前言 okok 我们已经学完了 所有的redis中的常用的数据结构 下面就是进阶 我会用一系列的例子 去讲解 如…