环境搭建
官方推荐使用社区版IDEA开发插件,因为方便调试核心代码。
You may use IntelliJ IDEA Ultimate as an alternative, but debugging the core code will only work with the Community Edition.
我下载的版本是
那么在IntelliJ IDEA Community Edition 下载对应版本的源码,解压后为intellij-community-182.4505
。
首先需要创建一个IntelliJ Platform SDK。
打开项目配置窗口,File | Project Structure,选择SDKs,点击添加按钮,选择IntelliJ Platform Plugin SDK:
默认使用弹出的IDEA社区版根目录即可,点击打开:
然后会让选择JDK版本,使用1.8:
最后给SDK配置源码路径,选择Sourcepath,点击加号添加,选择刚才下载解压的intellij-community-182.4505文件夹,添加全部源码:
这样,开发IDEA插件的SDK环境就创建好了,注意其中有个路径是Sandbox Home,即沙箱位置:/Users/damon4u/Library/Caches/IdeaIC2018.2/plugins-sandbox
我们在运行插件时,IDEA会再运行一个沙箱环境IDEA,因为IDEA本身也就是一个java环境,这个路径会存放沙箱环境的配置数据,如果发现调试过程中出现类似缓存现象,新特性不生效,那么可以手动删除这里的数据。
第一个工程
创建工程时选择IntelliJ Platform Plugin:
新创建的工程结构如下:
src目录下放置源文件,plugin.xml用来注册组件。
下面创建一个官方给的简单例子,在菜单栏添加一个选项,点击后弹出一个窗口。
首先需要创建一个Action,继承AnAction
类。通过实现actionPerformed
方法实现功能。
右键创建一个Action:
然后输入信息:
- Action ID:Action的唯一ID,推荐使用
PluginName.ID
。 - Class Name:创建的Action类的名字。
- Name:标题栏中选项文案。
- Description:可选,IDEA状态栏的提示文案。
- Add to Group:Groups是Action要放到哪个组里,比如主菜单栏
MainMenu
,Window下拉菜单栏WindowMenu
等。Actions和Anchor配合使用,可以选择放在下拉菜单中的开始,最后,或者某个已有选项的前面或者后面。 - Keyboard Shortcuts:配置快捷键。
IDEA帮我们创建了一个SayHelloAction
,我们需要实现actionPerformed
方法:
IDEA已经帮我们把创建的Action注册到plugin.xml
中:
这样第一个工程就写完了。点击运行按钮,启动沙箱环境。
在Window下拉菜单中点击我们的Say Hello选项,弹出提示框就算成功了。
关于Mac沙箱环境菜单栏触发问题
在Mac Mini(macOS High Sierra 10.13.6)运行插件时,点击菜单栏并没有反应,但是在MacBook Pro上运行时就没问题。
试着换了一下触发位置,比如绑定到generate弹窗中:
也可以触发。
后来发现,沙盒环境下自带的菜单栏点击都没有反应。。。后来在Action is not triggered from main menu 中找到了答案。
在运行沙箱环境时,添加参数:
这个参数是为了让Mac下的Java桌面程序的菜单栏不放到系统顶部,而是在应用自身顶部:
打包插件
插件开发好后,可以将它打包成jar包或者zip包(包含依赖类库),供别人使用。
选择 Build | Prepare Plugin Module
这样就会打包出一个jar包。
在插件中选择安装本地插件,就能使用了。