发布时间:2025-06-18
浏览次数:0
博客:https://.cn
沉淀、分享、成长,让自己和他人都能有所收获!
目录
五、写个测试案例
六、插件开发能做啥都
七、总结
八、系列推荐
一、前言
不踩些坑,根本不是成熟的码农!
你或许好奇,那所谓的肯德基全家桶究竟指的是什么?是整个家庭成员共同享用的桶装食品吗?还是仅仅只有一小部分?实际上并非如此,肯德基全家桶所强调的,是包含鸡肉在内的全家桶!
聆听这故事,犹如我时而为攻克难题而遍寻、摸索、核实、筛选技术途径,然因路径偏差,致使辛勤付出徒劳无功。只得在浩如烟海的资料、文档、源码中逐一探寻,逐步拼凑出适配自身问题情境的技术解决方案。
然而,这样的过程有时却不可避免,鲜少有情况能一蹴而就找到正确答案或合适人选。即便一开始就找到了,人们仍会继续查阅其他资料,以求找到更优的选择。对吧,这不就是你的做法吗?
二、抛出问题
我又要冲IDEA插件开发了!
在深入探讨了字节码插桩技术之后,我思考着,除了在代码正式上线后进行非侵入式监控之外,这项技术是否还能应用于开发过程中的系统接口提取工作呢?
怀着这个突然涌现的念头,我意识到,若要妥善解决这一问题,关键在于研发一款集成了IDEA插件和字节码插桩技术的工具,以增强代码执行过程中的方法执行,并提取所需的关键信息。令人惊喜的是,不仅有过构想,实际成果也已呈现,具体如下:
三、开发插件涉及的问题
问题概览:开发一款IDE插件需经历以下关键步骤:
四、开发插件的两种配置1. 基础配置
IDEA 2019.3.1 x64
为了确保能够顺畅地开发 IDEA 插件,必须对 JDK 进行配置,具体操作是在相应的设置中进行调整。
id 'org..' '0.6.3'
-5.2.1 与 2019 IDEA 版本下的插件开发匹配
构建,配置工具,用户主目录设置为D:/Files (x86)//-5.2.1/,具体路径可参照下方的图示。
若你采用IDEA New的常规操作流程,实际上只需关注前两步即可,但若你有所需求,则必须留意第三、四、五步的配置细节。此外,一般情况下,我们更倾向于采用某种方法来构建项目,这样一来,在需要添加额外Jar包时,你只需在build配置中进行操作intellij idea swing,无需将所需Jar包复制到工程的lib文件夹中。
2. 遇到问题
在使用 构建项目后,你会遇到几个问题;
请预先下载并设置好5.2.1版本,否则在构建过程中,系统自动下载将显得尤为缓慢。详情请参考链接:https://.org/next-steps/?=5.2.1&=all。
构建工程时候拉取相关内容,会比较慢,如果你有代理会好一些。
在开发基于该IDEA插件的繁琐项目时,构建环节中需要下载一个特定版本的IDEA软件以启动测试和开发插件,这是一个几百兆大小的压缩文件,名为-2019.3.1.zip。此刻你很可能遭遇一个崩溃的报错信息:“无法获取所有文件,错误代码:':n1'。”面对这种情况,如果你不介意麻烦,可以自行下载所需文件,并对它们进行SHA1加密处理,然后将加密后的文件存放到指定的缓存文件夹中,路径为“.\-2\files-2.1”。以下是具体的操作步骤:
在构建过程中,由于内存消耗较大,可能会出现Java heap space错误。因此,可以在IDEA项目的根目录下新建一个文件,并添加以下内容以调整Jvm参数:org..=- -XX:=512m。令人惊喜的是,这样做后,构建竟然顺利完成了,效果还不错。
五、写个测试案例1. 工程结构
PluginGuide
├── .gradle
└── src
├── main
│ └── java
│ ├── HiClazz.java
├── MyDumbAwareAction类文件
在文件结构中,我们可以看到有一个名为MySearchableConfigurable的Java文件。
在项目结构中,我们可以找到名为MyToolWindowFactory的Java文件。
在项目结构中,我们明确指出,TestUI.java文件是不可或缺的组成部分。
└── resources
├── icons
└── META-INF
└── plugin.xml
2.
public class HiClazz extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
项目对象project是通过调用e对象的方法getData,并传入PlatformDataKeys中的PROJECT键来获取的。
psiFile变量被赋值为e对象通过getData方法获取的与CommonDataKeys.PSI_FILE键关联的psiFile数据。
获取psiFile对象的虚拟文件路径,并将其赋值给String类型的变量classPath。
String title = "Hello World!";
项目弹出一个对话框,向用户展示信息,对话框中包含路径信息、标题以及一个信息图标,图标由Messages类中的getInformationIcon方法提供。
}
}
3.
public class MyToolWindowFactory implements ToolWindowFactory {
@Override
public void createToolWindowContent确保项目参数非空,且工具窗口参数亦非空。 {
设置工具窗口属性,使其在内容为空时自动隐藏。true);
class MyPanel extends SimpleToolWindowPanel {
public MyPanel(boolean vertical) {
super(vertical);
默认操作组group被成功初始化。new DefaultActionGroup();
group.add(new MyDumbAwareAction("Login1"));
group.add(new MyDumbAwareAction("Login2"));
group.add(new MyDumbAwareAction("Login3"));
创建ActionToolbar实例的代码如下:ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("ToolBar", group, false);
将工具栏组件设置为工具栏。
}
}
// 添加一个页
new MyPanel(false), "First", false), 0);
}
}
4. .xml
"com.intellij">
"true" anchor="bottom"
id="SmartIM"
factoryClass="MyToolWindowFactory">
"Other Settings" displayName="My Config" id="thief.id"
以实例而言,等同于"MySearchableConfigurable"/>
"HiId_FileMenu" class="HiClazz" text="HiName">
"FileMenu" anchor="first"/>
"MainMenu" anchor="first"/>
"EditMenu" anchor="first"/>
"ViewMenu" anchor="first"/>
"CodeMenu" anchor="first"/>
"AnalyzeMenu" anchor="first"/>
"RefactoringMenu" anchor="first"/>
"BuildMenu" anchor="first"/>
"RunMenu" anchor="first"/>
"ToolsMenu" anchor="first"/>
"WindowMenu" anchor="first"/>
"HelpMenu" anchor="first"/>
"HiId_EditorPopupMenu" class="HiClazz" text="HiName">
"EditorPopupMenu" anchor="first"/>
"HiId_MainToolBar" class="HiClazz" text="HiName">
"MainToolBar" anchor="first"/>
5. 测试结果
启动运行
运行界面
运行效果
六、插件开发能做啥都
在搜索引擎中查找关于IDEA插件开发的资料,结果显示共有44页相关内容。链接为https://.com/?p=41&q=idea%E6%8F%92%E4%BB%B6&type=intellij idea swing,这些内容涵盖了自动化测试、工程脚手架搭建、API自动生成、数据库DAO类的生成以及众多实用工具。此外,还有一些颇具趣味性的插件,例如:闲暇时阅读书籍、欣赏郭德纲的相声、进行微信或局域网聊天、英语翻译等功能。这里我给大家列举几个,开阔开阔思路。
1. 快速生成 CRUD 工程代码
2. 在 IDEA 中摸鱼聊天
3. 可视化流程编排
七、总结八、系列推荐
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码