Intellij IDEA插件开发指南

Intellij IDEA插件开发指南

一、开发背景

因为项目需求,接口开发需要注册服务到数据库。原始的注册是有一个小工具,但是该工具只支持window系统,没有mac版的。所以每次使用都需要开虚拟机,使用非常不方便。于是萌生了自己开发一个小工具的想法。
起初的想法是开发一个独立的工具,有自己的页面,后来一想,有些麻烦,且mac和windows不能兼容,且最近有看到lombok的使用,所以就想仿着写一块服务注册插件。

二、参考资料

官方资料:IntelliJ Platform SDK DevGuide
参考博文:
1、干货|IntelliJ IDEA插件开发
2、IntelliJ IDEA插件开发入门教程(一)

三、开发环境

开发工具:InterlliJ Platform Plugin

  • 下载开源代码intellij-community
  • 配置jdk,mac版配置路径:File->Platform Setting->SDKs->+
  • 创建第一个HelloWorld工程
    工程目录结构
|-projectName
	|------src
	|-------resources
				|---------META-INF
					|---------plugin.xml

新建一个java类继承com.intellij.openapi.actionSystem.AnAction

源码如下:

package com.jetbrains.action;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;

import java.util.HashMap;
import java.util.Map;

public class HelloWorldAction  extends AnAction {


    @Override
    public void actionPerformed(AnActionEvent e) {
        Project project=e.getData(PlatformDataKeys.PROJECT);

//        String name=project.getName();
//        String  virtualFile=project.getProjectFile().getUrl();
//        String    basePath=project.getBasePath();
//        String    projectFilePath=project.getProjectFilePath();

//        Map<String,String> map=ImmutableMap.of("name",name,"virtualFile",virtualFile,"basePath",basePath,"projectFilePath",projectFilePath);
        Map<String,String> map=new HashMap<String,String>();
        String title="标题";

        Messages.showMessageDialog(project,map.toString(),title, Messages.getInformationIcon());
    }
}

plugin.xml增加配置

<idea-plugin>
  <id>com.your.company.unique.plugin.id</id>
  <name>CsfPlagin</name>
  <version>1.0</version>
  <vendor email="11111@yourcompany.com" url="http://www.yourco1mpany.com">Asiainfo</vendor>

  <description><![CDATA[
      Enter short description foryour plugin here.<br>
      <em>most HTML tags may be use</em>
    ]]></description>

  <change-notes><![CDATA[
      Add change notes he .<br>
      <em>most HTML tags may  be used</em>
    ]]>
  </change-notes>

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
  <idea-version since-build="173.0"/>

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
       on how to target different products -->
  <!-- uncomment to enable plugin in all products
  <depends>com.intellij.modules.lang</depends>
  -->

  <extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
  </extensions>

  <actions>
    <group id="MyPlugin.SampleMenu" text="Greeting" description="Greeting menu">
      <add-to-group group-id="MainMenu" anchor="last"/>
      <action id="Myplugin.Textboxes" class="com.jetbrains.HelloAction" text="Hello" description="Says hello"/>
    </group>
    <action class="com.jetbrains.action.GenateSqlAction" id="genateSqlAction1" text="genateAction">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
    </action>
    <action class="com.jetbrains.action.GenateUipSqlAction" id="genateSqlAction2" text="genateUipAction">
      <add-to-group group-id="EditorPopupMenu" anchor="first" />
    </action>
  </actions>

</idea-plugin>

plugin.xml配置项介绍:

  • id name description 这些不再赘述。
  • actions配置所有的操作菜单
  • MainMenu 是主菜单,和File,Help等菜单同级
  • add-to-group下配置的是该group的子菜单
  • EditorPopupMenu 是在代码区右键的弹出菜单
  • 所有的菜单列表可以在resources.jar PlatformActions.xml下查看
  • anchor 设置菜单所在位置,末尾,首位等。

插件编译打包
Bulid->Prepare All plugin Modules For Deployment
编译完成后,在工程第一级目录下有一个ProjectName.jar 或者ProjectName.zip 。
如果没有引入其他jar包,打出的plugin 后缀名为.jar ,否则就是.zip

安装插件
Preferences->plugins->Setting(设置图标,不同版本展示不同)->Install plugin from Disk->选中ProjectName.jar/.zip ->确认->重启

效果
在主菜单可以看到一个Greeting的菜单项,点击有一个Hello子菜单项
效果图1效果图2

四、总结

  1. 该SDK不能使用maven来管理工程,因此引入其他jar包只能手动引入。

  2. 未完待续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值