Skip to content

fbsum/HelloWorldPlugin

Repository files navigation

Intellij Plugin 开发 —— Hello World

配置开发环境

新建项目

  • 为了方便项目添加第三方依赖,项目采用 gradle 方式构建
  • 使用 Kotlin 开发

过程:

通过 Gradle 构建项目,添加 Kotlin 支持(如下图)

构建项目后,修改项目 build.gradle 文件,添加插件开发 SDK

buildscript {
    ext.kotlin_version = '1.2.0'

    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

plugins {
    id "org.jetbrains.intellij" version "0.2.17"
}

apply plugin: 'org.jetbrains.intellij'
apply plugin: 'kotlin'

// 详细配置参数请看:https://github.com/JetBrains/gradle-intellij-plugin#configuration
intellij {
    localPath '/Applications/IntelliJ IDEA CE.app'
    intellij.updateSinceUntilBuild false
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

repositories {
    jcenter()
}

group 'com.fbsum.plugin'
version '0.0.1'

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
}

查看 External Libraries 确认配置成功

在 src/main/resources/ 目录下添加 META-INF/plugin.xml,修改相关信息(重要,尤其是 id)。

<idea-plugin>
  <id>com.fbsum.plugin.hello</id>
  <name>HelloWorld Plugin</name>
  <version>0.0.1</version>
  <vendor email="dummy" url="dummy">dummy</vendor>

  <description><![CDATA[
      Sample plugin.<br>
    ]]></description>

  <change-notes><![CDATA[
      Release 0.0.1: Initial release.<br>
    ]]>
  </change-notes>

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

  <!-- 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">
  </extensions>

  <actions>

  </actions>

</idea-plugin>

创建 Action

将生成的 Action 转成 Kotlin 文件

class HelloAction : AnAction() {

    override fun actionPerformed(e: AnActionEvent) {
        val project = e.project
        val s = Messages.showInputDialog(project, "What's your name?", "Hello", Messages.getQuestionIcon())
        Messages.showMessageDialog(project, "Hello $s!", "Welcome", Messages.getInformationIcon())
    }
}

运行项目

运行 runIdea Task

查看插件

显示 IDEA LOG

在需要的类里添加 Log 实例

class HelloAction : AnAction() {

    private val log = Logger.getInstance(HelloAction::class.java)

    override fun actionPerformed(e: AnActionEvent) {

        log.info("actionPerformed()")
        log.warn("actionPerformed()")
        log.debug("actionPerformed()")
        log.error("actionPerformed()")

        val project = e.project
        val s = Messages.showInputDialog(project, "What's your name?", "Hello", Messages.getQuestionIcon())
        Messages.showMessageDialog(project, "Hello $s!", "Welcome", Messages.getInformationIcon())
    }
}

编辑 runIdea 的运行配置,在 Logs 栏里,添加项目 build 目录下的 log 文件地址

Log 结果如下图(PS:log.debug 不能显示,需要更改 Help > Debug Log Settings)

Build Plugin

修改 gradle 配置

intellij {
    ......
    // 不更新 plugin.xml 里的 since-build 属性,即以 plugin.xml 的配置为准
    intellij.updateSinceUntilBuild false
    ......
}

运行 buildPlugin task

Thanks

About

A intellij plugin sample, built with gradle.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages