为什么非得使用maven?
官方提供的Plugin开发方式有两种,第一种是使用DevKit,不支持自动打包(需要点击几下才能打包完成);第二种是使用Gradle(Gradle和idea的版本兼容性不好)。
原理
- 将maven工程打包成一个zip,再在idea插件中心进行安装。
- 使用assembly插件打包成zip
- 使用ant-run插件来复制插件相关文件到sandbox目录
涉及的maven插件
- maven-compiler-plugin (编译源代码)
- maven-assembly-plugin (打包工程)
- maven-antrun-plugin (执行ant任务)
配置步骤(建议先按如下操作一次,先直观体验一下)
- 下载本仓库代码(是一个基于maven的工程)
- 导入到idea中(我使用的是IU-2019.2.4)
- 配置 Project SDK ctrl+shift+alt+S --> Project --> Project SDK -> New... --> IntelliJ Platform Plugin SDK
- 点击菜单的Run -> Edit -onfigurations...,在Run/Debug Configurations对话框中点击左上角的“+”,下拉找到并选择Plugin, 在Name框中输入demo,JRE选第3步配置的SDK
- 编辑.idea/workspace.xml,找到
<component name="RunManager">
,修改如下:<module name="" />
修改为<module name="idea-plugin-demo-by-maven" />
,即是工程名称<option name="Make" enabled="true" />
下面添加一行<option name="Maven.BeforeRunTask" enabled="true" file="$PROJECT_DIR$/pom.xml" goal="clean verify -DskipTests" />
- 运行,点击菜单的Run -> Run 'demo'或Debug 'demo'都行,启动后会重新打开一个idea。
- 等新开的idea运行成功后随意打开一个工程或新建一个工程,在Tool菜单下即可看到菜单“测试父菜单”,点击体验一下吧。
调试
文件位置: .idea/workspace.xml
<component name="RunManager">
<configuration name="Unnamed" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType">
<module name="idea-plugin-demo-by-maven" />
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -ea" />
<option name="PROGRAM_PARAMETERS" value="" />
<predefined_log_file enabled="true" id="idea.log" />
<method v="2">
<option name="Make" enabled="true" />
<option name="Maven.BeforeRunTask" enabled="true" file="$PROJECT_DIR$/pom.xml" goal="clean verify -DskipTests" />
</method>
</configuration>
</component>
clean verify -DskipTests
命令行打包
mvn clean package -DskipTests
其它
- 获取环境变量
功能
- [x] 添加一个菜单(一级菜单和二级菜单)
- [x] 添加一个ToolWindow
- [ ] 添加一个Setting项
- [x] 添加一个Icon,Icons的包要和hello.png的包一样且都是icons
- [ ] 可以参考其它插件的实现 (C:\Users\Administrator.IntelliJIdea2019.2\config\plugins)
- [x] 访问网站