main
- 支持 lambda 作用域中使用 it 参数作为源 Bean - 新增链式 Copy 复选框选项,默认不勾选 - 同时复制父类属性改为默认勾选 - 优化下拉框类名显示逻辑 - 移除目标类型解析校验,直接按源 Bean getter 拼接 set 方法 - 增加本地 intellijIdea 构建支持
Bean Copy (IntelliJ IDEA 插件)
一键把源 JavaBean 的属性值,通过 get/set 方法复制到目标 JavaBean。
功能
在一个方法内写:
A a = new A();
B b = new B();
按下 Alt + Insert(Generate)或 右键菜单,选择 Bean Copy..., 在弹出的对话框中选一个 Source Bean(读) 和一个 Target Bean(写), 插件就会在光标处自动生成:
b.setXxx(a.getXxx());
b.setYyy(a.getYyy());
// ... 每个在目标类中有同名 setter 的属性
- 自动识别
getXxx()、isXxx()(布尔)等 getter - 用
PropertyUtil的属性名匹配做 get/set 配对,get / set / is前缀与大小写自动处理 - 只复制「源有 getter 且目标有同名 setter」的属性
- 对话框的两个下拉框可编辑:既能下拉选择,也能直接输入变量名
- 若光标正位于某个变量上,打开对话框时会自动预填源/目标为那个变量
- 光标选中变量触发时,生成的代码会替换选区,去掉先前选中的变量名
- 支持 lambda 作用域:不仅识别局部变量,还能识别 lambda 参数(如
it),可在list.stream()...map(it -> { ... it 复制给新对象 ... }).toList()中直接把it当源 Bean - 提供「同时复制父类(继承)的属性」复选框(默认勾选),勾选后连同父类/接口继承的 getter/setter 一起复制
- Target 填类名(经 IDE 自带类检索/索引解析)即可自动生成链式
new Target().setXxx(src.getXxx()).setYyy(src.getYyy());(只纳入返回目标类自身的链式 setter),适合 builder / 链式赋值场景;Target 填变量名则逐条生成赋值语句
环境要求
- JDK 21(IntelliJ 2025.x 平台基于 JDK 21 编译)
- IntelliJ IDEA(开发/构建时会自动下载 2025.2 平台依赖)
构建技术栈
- 构建脚本位于
build.gradle.kts/settings.gradle.kts/gradle.properties - 使用 IntelliJ Platform Gradle Plugin 2.x(
org.jetbrains.intellij.platform) - 目标平台
intellijIdea("2025.2.6.2"),支持 2025.2+(since-build = 252) - 额外引入内置
com.intellij.java插件,使PsiClass / PsiMethod / PsiJavaFile等 Java PSI 可被编译 - Gradle 9.5 wrapper 已内置,无需自行安装 Gradle
构建
用 IntelliJ IDEA 打开本项目,等待 Gradle 同步完成; 或命令行(项目自带 wrapper,无需本机安装 Gradle):
./gradlew build # 产出 build/distributions/idea-plugin-copy-bean-1.0.1.zip(已让 build 依赖 buildPlugin)
./gradlew buildPlugin # 等价:仅产出插件 zip
说明:
buildPlugin是 IntelliJ 插件专属任务,默认不会挂到标准build生命周期上; 项目里已通过tasks.named("build") { dependsOn("buildPlugin") }让./gradlew build也能直接产出可安装的 zip。
运行调试
在 IDEA 的 Gradle 任务里(或命令行)运行:
./gradlew runIde # 启动一个带本插件的临时 IDE 实例进行调试
首次运行会自动下载平台并全量索引,耗时较长(几十分钟),属正常现象;后续会复用配置缓存/构建缓存,快很多。
安装到正式 IDE
- 执行
./gradlew build或./gradlew buildPlugin - 打开 IDEA → Settings → Plugins → ⚙ → Install Plugin from Disk…
- 选择
build/distributions/idea-plugin-copy-bean-1.0.1.zip并重启 IDE
项目结构
src/main/resources/META-INF/plugin.xml # 插件描述符,注册菜单动作、声明平台版本
src/main/kotlin/top/yexuejc/beancopy/
BeanCopyAction.kt # 触发动作 + 生成逻辑(遍历源 getter → 匹配目标 setter,支持继承链)
BeanCopyDialog.kt # 源/目标 Bean 选择对话框(可编辑下拉 + 复制父类复选框)
BeanVar.kt # 作用域内 Bean 变量数据类
gradle.properties # 版本号、编译内存、Gradle 缓存开关
settings.gradle.kts # 插件仓库、Kotlin/platform 插件版本
build.gradle.kts # intellijPlatform 声明、目标平台与依赖、build→buildPlugin 绑定
Description
一键把源 JavaBean 的属性值,通过 get/set 方法复制到目标 JavaBean。
104 KiB
0 Stars
1 Watchers
0 Forks