工欲善其事,必先利其器。——《论语·卫灵公》

idea+gradle配置

idea下载地址:官网

gradle下载地址:官网

idea与gradle的配置这里就不做过多的赘述了,需要的同学可以参考一下地址进行配置。

idea:https://blog.csdn.net/saoang/article/details/124224783

gradle:https://www.jianshu.com/p/703a7ea96803

demo创建

idea创建项目时选择Gradle的IntelliJ Platform Plugin选项,如图所示:

配置完如上信息点击下一步,填写插件项目的基本信息:

gradle项目配置如下:

最后生成项目结构如下:

plugin配置文件详解:

<idea-plugin><!--插件的唯一id --><id>my.intellij.idea.plugins.demo</id><!--插件名称 --><name>Plugin display name here</name><!--插件开发用户信息 --><vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor><!--插件描述信息 idea插件下载时会抓取此信息 --><description><![CDATA[Enter short description for your plugin here.<br><em>most HTML tags may be used</em>]]></description><!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.htmlon how to target different products --><!-- depends 插件依赖其他插件配置 引用其他插件的id<depends>com.intellij.modules.lang</depends>--><extensions defaultExtensionNs="com.intellij"><!-- intellij的自定义扩展点信息--></extensions><actions><!-- 自定义actions --><action id="DemoWindows" class="com.my.intellij.idea.plugins.DemoWindows" text="DemoWindows"description="DemoWindows"><!--action展现的位置--><add-to-group group-id="ProjectViewPopupMenu" anchor="last"/></action></actions>
</idea-plugin>

除了在idea创建插件项目外,我们还可以下载github模板代码进行修改:

https://github.com/JetBrains/intellij-platform-plugin-template

接下来,我们来实现一个简单的窗口: 在项目中新建-》plugin DevKit-》Action

编写action代码,新增一个简单的提示语:

public class DemoWindows extends AnAction {@Overridepublic void actionPerformed(AnActionEvent e) {// TODO: insert action logic hereMessages.showInfoMessage("DemoWindows", "");}
}

运行测试成果:运行runIde命令,会启动一个新的idea,该idea中已经安装了你开发的插件。在该idea中可以直接使用插件,使用过程中,可以在项目里面断点跟进。启动的idea和正常idea操作是一样的,可以打开一个测试demo,来测试你的插件是否正常运行。



我们可以看到插件运行成功!

除了这种方式,我们也可以运行gradle的build命令生成zip文件,在自己的idea中进行本地安装自己的插件。

但是。。。 事情真的会这么一帆风顺么?

问题汇总

1、gradle引用maven仓库

可以参考:https://blog.csdn.net/rao991207823/article/details/110952583 进行配置。

2、can not download jbr-11_0_6-windows-i586-b520.43.tar.gz

当时遇到这个问题,我以为时gradle仓库配置的问题,检查了一遍发现仓库地址配置的没问题,去中央仓库查询却查询不到此依赖的资源。最后在github的issue上找到了类似的问题:https://github.com/jetbrains/gradle-intellij-plugin/issues/471

原来是因为未依赖的jdk设置的是1.8 64位版本 但是使用的jre 却是 32位版本的 最终造成这个奇怪的问题。

3、java.util.zip.ZipException: zip END header not found

报错信息如下:

我在根据模板的方式生成插件项目时,demo\gradle\wrapper\gradle-wrapper.properties中配置的gradleb版本与模板中的版本不一致造成的,修改此配置为自己使用的gradle版本就迎刃而解了。

参考文档

idea插件官方文档(无中文):https://plugins.jetbrains.com/docs/intellij/welcome.html

idea插件文档翻译版本:https://kana112233.github.io/intellij-sdk-docs-cn/welcome.html

gradle官方文档:https://docs.gradle.org/current/userguide/userguide.html

idea插件开发-环境搭建相关推荐

  1. Windows下基于vue框架的UXP插件开发环境搭建及程序试运行

    从PS2021(v22)开始,Adobe官方引入了新的插件平台:UXP,它的最终任务是取代现有的CEP,所以赶紧来提前做一下准备吧,我对这方面也一直很感兴趣,但是这方面的中文资料太少了,然后在网上查了 ...

  2. iphone 越狱插件开发-- 环境搭建篇

    之前研究了一下如何进行iPhone越狱后插件的开发,一直没来得及记录一下笔记,饭后闲来无事,来此更新一下. 前提: iOS设备要越狱,这个都不介绍了. 第一步:越狱插件开发工具:iOSOpenDev, ...

  3. CDR插件开发之CPG插件002 - CPG插件开发环境准备和搭建

    上篇文章对什么是CPG插件做了简单的介绍,读者只需要心中有个概念即可.那么,本篇文章就直接开始动手,正式踏上CPG插件开发之路的必经步骤:开发环境搭建.CPG插件不像GMS插件那样,可以在CDR自带的 ...

  4. Figma 插件开发 - Vite 环境搭建

    最近工作主要和 Figma 插件打交道,梳理一些踩坑的经验~ 开始 官方的起始例子:www.figma.com/plugin-docs- 按步骤将插件文件保存到本地即可,调试时可以右键唤起插件,可以关 ...

  5. Flutter环境搭建、运行gallary项目

    Flutter环境搭建.运行gallary项目 主体步骤 1.从github clone flutter的sdk, git clone -b beta https://github.com/flutt ...

  6. 3dmax插件开发环境配置及FileExport和Utilities模板测试

    文章目录 Debug Symbols设置 FileExport模板测试 Utilities模板测试 参考资料: 3mdax插件开发之环境配置(3dmax2018SDK +VS2017 +win10)详 ...

  7. tinymce系列(一) tinymce 环境搭建

    文章目录 tinymce 环境搭建 初始化目录结构 使用 Rollup 运行,打包 Rollup 打包效果 新建 2 个插件,编写 rollup.config.js rollup 配置 ES6 转 E ...

  8. Ionic+Cordova开发环境搭建

    Ionic+Cordova的组合是一个跨平台的移动开发框架,属于HybirdApp开发模式.其中Ionic是一个前端框架,集成了AngularJs在里面,有很好很漂亮的UI控件.Cordova本身就是 ...

  9. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

最新文章

  1. hibernate Expression详解
  2. elasticsearch配置小记
  3. C#调用SSIS包及读取DataReader目标
  4. 新增两款Skin(clover与Valentine)
  5. e.target 和 e.srcElement 的使用问题
  6. 数学:深入浅出通信原理(陈爱军)
  7. dedecms采集侠问题
  8. APP自动化-显示等待/强制等待/命令等待
  9. JavaScript模块化编程(CommonJS篇)
  10. 【JAVA笔记】JAVA调用同一个包里的不同类的方法:
  11. 时钟周期,机器周期,指令周期的区别
  12. 认证模式之Digest模式
  13. mac 下安装brew
  14. Arduino入门教程
  15. 网易严选java工资_网易严选的文案,值得月薪三万!
  16. 单价多少元一千克在c语言中怎么表示_装牛肉的塑料盒“单价”49.8元?市民吐槽店家“借壳逆袭”行为...
  17. 乳清分离蛋白的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 【最佳实践】携程服务注册中心架构演进
  19. 西子奥的斯服务器显示dlf,西子奥的斯电梯驱动器故障代码
  20. 极值点与拐点的对应三个充分条件

热门文章

  1. 通过Gearman实现MySQL到Redis的数据复制
  2. linux ppp用户管理,linux下ppp拨号上网
  3. 解决blur与click冲突
  4. DevOps实践|快速提升团队软件开发成熟度,提升研发效能
  5. Zynq入门——PS和PL接口技术详解
  6. Python 编码规范 PEP8
  7. MySQL之导出整个及单个表数据
  8. LCD不带显存,是如何内存映射屏幕。S5PV210SoC在内存中选一段内存存放颜色数据,通过配置将LCD控制器和这一段内存连接起来,构成映射关系,LCD控制器就自动从显存中读取像素数据传给LCD驱动器
  9. ~~因果图法示例分析
  10. 一个实例说明PID 参数整定