IDEA插件开发实战

这篇具有很好参考价值的文章主要介绍了IDEA插件开发实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 背景

插件体系是IDEA的精髓,插件市场里拥有无数开发者提交的插件,这让IDEA拥有了成长的能力。下面我通过一个例子,介绍插件创建、调试和发布的完整过程。

2. 开发步骤

2.1 创建工程

官方推荐2种方式来创建插件工程,一种是基于Github的模板代码,一种是基于Gradle手动配置。我推荐使用Github模板的方式,插件工程clone下来就可以直接执行,对新人比较友好。

2.2.1 模板代码

  1. 打开模板的Github地址:https://github.com/JetBrains/intellij-platform-plugin-template。

  2. 点击“Use this template”,将项目fork到自己的仓库里,或者直接下载模板代码。 IDEA插件开发实战

2.2.2 Gradle方式

在new project的时候,选择Gradle->IntelliJ Platform Plugin

IDEA插件开发实战

2.2 开发插件

IDEA里有一个Intention action(代码推测)功能,快捷键是shift+enter。我们尝试新增一种代码推测,在输入类名后,通过推测自动生成new语句。例如,输入“User”,生成“User user = new User();”。

2.2.1 编写代码(Kotlin)

要新增Intention action功能,就要实现IntentionAction接口,实际代码里是用PsiElementBaseIntentionAction这个抽象类,它已经继承了IntentionAction。功能代码如下,IntentionAction接口里的核心方法是isAvailable()和invoke()方法。isAvailable()是在敲下shift+enter时,判断当前action是否满足执行条件;invoke()是选择aciton后,需要执行的逻辑。

class NewObjectGenerator : PsiElementBaseIntentionAction() {

    override fun isAvailable(project: Project, editor: Editor, element: PsiElement): Boolean {
        // 格式User
        return element is PsiIdentifier && element.parent is PsiJavaCodeReferenceElement
    }

    @Throws(IncorrectOperationException::class)
    override fun invoke(project: Project, editor: Editor, element: PsiElement) {
        val typeName = element.text
        // 变量名第一个字母改成小写
        val varName = typeName.replaceRange(0, 1, ""+typeName.get(0).toLowerCase())

        val containingFile = element.containingFile
        val psiDocumentManager = PsiDocumentManager.getInstance(project)
        val document = psiDocumentManager.getDocument(containingFile)
        val statement = " $varName = new ${typeName}();"
        val offset = element.endOffset
        // 在当前元素的后面,插入文本
        document!!.insertString(offset, statement)
    }

    override fun getFamilyName(): @IntentionFamilyName String {
        return "new对象"
    }

    override fun getText(): @IntentionFamilyName String {
        // 提示的名称
        return "new对象"
    }
}

2.2.2 注册Aciton

resource/META-INF/plugin.xml是插件的配置文件,将自定义的action类注册到配置文件里去。

<extensions defaultExtensionNs="com.intellij">
    <intentionAction>
        <className>com.github.commongenerator.actions.NewObjectGenerator</className>
    </intentionAction>
</extensions>

2.2.3 启动插件

执行:gradle->intellij->runide

会在沙箱里启动ide实例,这个实例能访问到最新的插件代码,也可以通过Debug模式启动。IDEA插件开发实战

2.2.4 测试插件

在User类名上,通过shift+enter触发Intention action,弹出了“new对象”提示。IDEA插件开发实战IDEA插件开发实战

2.3 发布插件(插件市场)

2.3.1 手工发布

先在插件市场创建插件,需要上传jar包。在执行过runide后,会在build/libs下生成jar包。IDEA插件开发实战

如果是正式的版本,就插件就会进入审核状态。IDEA插件开发实战

2.3.2 自动发布

通过publishPlugin脚本,可以在idea上直接发布插件到市场。build.gradle.kts里配置了publishPlugin相关的参数,配置里提示我们需要在系统环境变量里提供PUBLISH_TOKEN。

申请PUBLISH_TOKEN

PUBLISH_TOKEN通过插件超市的个人页面上申请。IDEA插件开发实战

设置PUBLISH_TOKEN

我用的是zsh,所以在~/.zshrc文件里添加了环境变量

export PUBLISH_TOKEN="perm:xxxxx"

发布插件

执行publishPlugin脚本

IDEA插件开发实战

3. 总结

至此,插件的开发和发布流程就结束了。可以看出,jetbrain通过模板代码、发布脚本等方式,大大简化了插件的开发成本,让普通开发者也可以快速的开发出插件。IDEA作为我们最重要的开发工具,每个开发者都应该体验一下插件开发的乐趣。

4. 相关文献

IntelliJ Platform SDK官方文档:https://plugins.jetbrains.com/docs/intellij/getting-started.html

IntelliJ Platform SDK中文文档:IntelliJ Platform SDK / IntelliJ Platform SDK DevGuide文章来源地址https://www.toymoban.com/news/detail-440515.html

到了这里,关于IDEA插件开发实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Intellij IDEA 插件开发

    很多idea插件文档更多的是介绍如何创建一个简单的idea插件,本篇文章从开发环境、demo、生态组件、添加依赖包、源码解读、网络请求、渲染数据、页面交互等方面介绍,是一篇能够满足基本的插件开发工程要求的文章。 如有疏漏欢迎指正,如想深入了解欢迎探讨。 Intelli

    2024年02月11日
    浏览(111)
  • IDEA插件开发

    idea这些插件都是怎么开发的?本文手把手带你开发 IDEA插件开发,注意JDK版本: IDEA 2020.3 以上版本插件开发时,需要使用 Java 11。 IDEA 2022.2 及更高版本插件开发时,需要使用 Java 17 1.1、配置SDK并新建项目(非gradle项目) 1、在新建时配置idea SDK 配完成sdk,点下一步填写项目名就可

    2024年02月16日
    浏览(27)
  • idea插件开发-自定义语言00-开发导航

     源码 Initial Setup(初始化设置) ​​Registering a File Type​​​ :注册文件类型要实现一个自定义的语言必须要实现的,​​示例代码​​ ​​Implementing Lexer实现​​ :实现编程语言的语法分析器,​​示例代码​​ ​​Implementing Parser and PSI​​​:实现一个词法分析器

    2024年02月12日
    浏览(33)
  • IDEA安装Go开发插件

    IDEA安装Go插件 1、File —Settings — Plugins — 右侧搜索框中搜索  Go — 直接安装 — 重启 — 查看Languages Frameworks中是否安装成功,是否有Go选项 配置GOROOT 1、File —Settings —Languages Frameworks —Go —GOROOT —在右侧选中Go语言的SDK即可: C :Program FilesGo 2、如果报错  The selected

    2024年02月12日
    浏览(80)
  • ModelBox实战开发:RK3568实现摄像头虚拟背景

    摘要: 本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。 本文分享自华为云社区《ModelBox开发案例 - RK3568实现摄像头虚拟背景【玩转华为云】》,作者:AI练习生 。 本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开

    2024年02月09日
    浏览(53)
  • 几款提高开发效率的Idea 插件

    开发代码过程中经常会有一些需要提交到代码仓库的文件,比如java文件生成的.class、.jar 等,如果将编译后的文件都提交到代码库那么代码库会很大,关键是没有必要。 这款插件就可以很方便的解决某类文件或者某个文件夹不需要提交到代码仓库的问题。 提供Spring环境下的

    2024年01月16日
    浏览(55)
  • 20款超级好用的idea插件,开发效率翻倍!!!

    在使用IntelliJ IDEA进行开发时,许多插件可让开发人员更高效地编写代码。以下是我推荐的20个在IDEA中好用的插件: 在右侧编辑器旁边添加一个缩略图以查看整个文件的结构。 当您使用IDEA中的菜单或快捷键时,会提供提示以帮助您记住更好的快捷方式。 通过提供注解和其他

    2024年02月06日
    浏览(83)
  • 十几款IDEA开发必备的插件,新手必用

    IDEA有很多优秀的插件,使用它们不仅大大增加了开发效率,也能给大家带来更好的coding体验。“工欲善其事必先利其器”,以下插件基本都可以通过 IDEA 自带的插件管理中心安装。   1、CodeGlance    拖动浏览代码更加方便,还有放大镜功能。 2、Restfultoolkit    一套 RESTf

    2024年02月03日
    浏览(37)
  • 小步快跑,敏捷开发的精髓!

    每日站会,两周一迭代,有自己的“Scrum Master”,就是敏捷实践?No! 具备敏捷之形的团队有很多,但是,真正掌握敏捷精髓的,却并不多见。这是因为,敏捷方法属于simple but not easy(简单但并不好做)。结合我这么多年的体会来看,与其说敏捷是一场研发方式的变革,不如

    2024年02月10日
    浏览(23)
  • idea插件开发-自定义语言4-Syntax Highlighter

             SyntaxHighlighter 用于指定应如何突出显示特定范围的文本, ColorSettingPage可以定义颜色。         TextAttributesKey用于指定应如何突出显示特定范围的文本。不同类型的数据比如、数字、字符串等如果要突出显示都需要创建一个TextAttributesKey实例。一个类型如

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包