13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?

目录

一、前言

创新互联是一家集网站建设,绵竹企业网站建设,绵竹品牌网站建设,网站定制,绵竹网站建设报价,网络营销,网络优化,绵竹网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

二、抛出问题

三、开发插件涉及的问题

四、开发插件的两种配置

1. 基础配置

2. 遇到问题

五、写个测试案例

1. 工程结构

2. AnAction

3. MyToolWindowFactory

4. plugin.xml

5. 测试结果

六、插件开发能做啥都

1. 快速生成 CRUD 工程代码

2. 在 IDEA 中摸鱼聊天

3. 可视化流程编排

七、总结

一、前言

不踩些坑,根本不是成熟的码农!

你觉得肯德基全家桶是什么?一家人一起吃的桶吗,就那么一点点?不是,肯德基全家桶说的是,鸡的全家桶!

听到这个故事就像有时候我因为需要解决某些问题去搜索、折腾、验证、排除的技术方案,因为方向不对,所以努力也就白费。只能一次次在众多的资料、文档、源码中一点点找到并组合出适合自己的问题场景的技术处理手段。

但这个过程有时候又是必须经历的,很少有时候能一次就找到正确的答案或者人,哪怕开始就找到了,也会再去排查下其他的资料,看看还有没有更好的。是不,这就是你吧?

二、抛出问题

我又要冲IDEA插件开发了!

在研究字节码插桩的相关技术后,??考虑着除了通常的用在代码上线后的非入侵式监控外,是不是也可以用于研发在开发阶段对系统接口的提取呢?

带着这个从脑袋中冒出的想法,想到如果要处理这个事情,最核心的问题就是开发一款IDEA插件+字节码插桩能力,在代码运行时对运行方法增强,提取相关的必要信息。别说案例还真做出来了,如下:

三、开发插件涉及的问题

问题汇总:开发一个 IDEA 插件基本要涉及到的问题过程如下:

四、开发插件的两种配置

1. 基础配置

如果你是使用 IDEA New Project 默认的 IntelliJ Platform Plugin 方式,其实只关注1、2两步骤就可以了,但如果你需要 Gradle,那么需要注意3、4、5步骤的设置。当然通常也更推荐使用 Gradle 来搭建工程,这样你在需要一些额外的 Jar 包时候,只需要在 Gradle build.gradle 配置即可,而不是把需要的 Jar 包复制到工程的 lib 下。

2. 遇到问题

在使用 Gradle 构建项目后,你会遇到几个问题;

五、写个测试案例

1. 工程结构

 
 
 
 
  1. PluginGuide 
  2. ├── .gradle 
  3. └── src 
  4.     ├── main 
  5.     │   └── java 
  6.     │       ├── HiClazz.java 
  7.     │       ├── MyDumbAwareAction.java 
  8.     │       ├── MySearchableConfigurable.java 
  9.     │       ├── MyToolWindowFactory.java     
  10.     │       └── TestUI.java     
  11.     └── resources 
  12.         ├── icons   
  13.         └── META-INF 
  14.             └── plugin.xml  

2. AnAction

 
 
 
 
  1. public class HiClazz extends AnAction { 
  2.  
  3.     @Override 
  4.     public void actionPerformed(AnActionEvent e) { 
  5.         Project project = e.getData(PlatformDataKeys.PROJECT); 
  6.         PsiFile psiFile = e.getData(CommonDataKeys.PSI_FILE); 
  7.         String classPath = psiFile.getVirtualFile().getPath(); 
  8.         String title = "Hello World!"; 
  9.         Messages.showMessageDialog(project, classPath, title, Messages.getInformationIcon()); 
  10.     } 
  11.  

测试在 IDEA 中读取鼠标停留在类文件中的信息。我们可以把这个 AnAction 配置到各个 IDEA 菜单中。

3. MyToolWindowFactory

 
 
 
 
  1. public class MyToolWindowFactory implements ToolWindowFactory { 
  2.  
  3.     @Override 
  4.     public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) { 
  5.  
  6.         toolWindow.setToHideOnEmptyContent(true); 
  7.  
  8.         class MyPanel extends SimpleToolWindowPanel { 
  9.  
  10.             public MyPanel(boolean vertical) { 
  11.                 super(vertical); 
  12.  
  13.                 DefaultActionGroup group = new DefaultActionGroup(); 
  14.                 group.add(new MyDumbAwareAction("Login1")); 
  15.                 group.add(new MyDumbAwareAction("Login2")); 
  16.                 group.add(new MyDumbAwareAction("Login3")); 
  17.  
  18.                 ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("ToolBar", group, false); 
  19.                 setToolbar(toolbar.getComponent()); 
  20.             } 
  21.  
  22.         } 
  23.  
  24.         // 添加一个页 
  25.         toolWindow.getContentManager().addContent(ContentFactory.SERVICE.getInstance().createContent(new MyPanel(false), "First", false), 0); 
  26.  
  27.     } 
  28.  

4. plugin.xml

 
 
 
 
  1.  
  2.      
  3.     
  4.                 id="SmartIM" 
  5.                 factoryClass="MyToolWindowFactory"> 
  6.      
  7.      
  8.      
  9.     
  10.                          instance="MySearchableConfigurable"/> 
  11.  
  12.  
  13.  
  14.      
  15.      
  16.          
  17.          
  18.          
  19.          
  20.          
  21.          
  22.          
  23.          
  24.          
  25.          
  26.          
  27.          
  28.      
  29.      
  30.          
  31.      
  32.      
  33.          
  34.      
  35.  

在 plugin.xml 的配置中,主要是把各个功能实现窗体配置到对应的菜单下,比如 Tools 下、toolWindow 里等。

5. 测试结果

启动运行

运行界面

运行效果

当鼠标点到类的上,在点 HiName 就可以看到对应的工程类信息了。

六、插件开发能做啥都

在 GitHub 上搜索 IDEA 插件开发,一共有44页内容,https://github.com/search?p=41&q=idea%E6%8F%92%E4%BB%B6&type=Repositories 涉及到自动化测试、工程脚手架、API生成、生成数据库的DAO类、一些常用工具,当然还有一些比较有意思的,比如:摸鱼看书、听郭德纲相声、微信聊天、局域网聊天、英语翻译等等。这里我给大家列举几个,开阔开阔思路。

1. 快速生成 CRUD 工程代码

2. 在 IDEA 中摸鱼聊天

地址:https://github.com/Jamling/SmartIM4IntelliJ

描述:ntelliJ IDEA上的SmartIM(原SmartQQ)插件,可以在IDEA中使用QQ或微信聊天。安装成功后,会在底部栏出现一个SmartIM的tab(如果没有底部栏,则在菜单View中把ToolButtons勾选上)

3. 可视化流程编排

七、总结

IDEA 开发技术涉及到了对 IDEA 插件开发 API 的熟悉以及UI界面的开发,所以如果想开发一款 IDEA 插件,基本离不开对 Swing 的编写,不过也不需要太复杂的页面,所有这部分技能还好。

IDEA 官网文档仅提供了两种构建 IDEA 插件工程的方法,但更推荐 Gradle 方式,这样可以满足你对后续其他功能组件的便捷引入,以及做其他内容的扩展。

IDEA 插件开发可以开发出很多用于提效研发编程的技术插件,例如一些监控、脚手架、接口API以及调试、流程化低代码编排等等,所以这部分内容的价值还是蛮大的。


网站标题:技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?
分享路径:http://cdbrznjsb.com/article/ccsccgs.html

其他资讯

让你的专属顾问为你服务