目前,公司主流的Java开发还是使用的是Eclipse。Eclipse作为一个上古时代的开发IDE,确实有着十分重要的地位。但是,为了提高开发效率,我们还是应该要尝试使用一些目前更为主流,效率也更高的开发工具——IDEA。 然而,公司目前只有一个代码规范的Eclipse插件。在IDEA上,依然没有一个公司的规范的插件,于是,我打算开始学习如何去写一个IDEA的插件以弥补这方面空缺。
新建你的插件项目
点击文件-新建-项目
然后选择IDE 插件:
点击创建,即可创建你的第一个插件项目。
你会得到一个项目目录:
目录部分文件解释:
settings.gradle.kts - 指明当前项目的名称。
gradle-wrapper.properties - 指明使用的gradle版本,如果有必要,它会自动去下载一个必须的gradle版本。
src.mian.resources.META-INF - 该文件夹下存储的是插件项目的相关配置文件。
build.gralde.kts - gradler的构建文件
plugins {
id("java")
id("org.jetbrains.intellij") version "1.7.0"
}
//向导中所写的组名
group = "com.sitr"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
//指明被用来创建该插件的IDEA版本和IDEA类型(如IC就是旗舰版)
intellij {
version.set("2021.3")
type.set("IC") // Target IDE Platform
plugins.set(listOf(/* Plugin Dependencies */))
}
tasks {
// Set the JVM compatibility versions
//被注入来强制使用JDK11来编译Java源码
withType<JavaCompile> {
sourceCompatibility = "11"
targetCompatibility = "11"
}
//指定用于构建插件的最大版本和最小版本相兼容
patchPluginXml {
sinceBuild.set("213")
untilBuild.set("223.*")
}
signPlugin {
certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv("PRIVATE_KEY"))
password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
}
publishPlugin {
token.set(System.getenv("PUBLISH_TOKEN"))
}
}
添加你的第一个Action吧!
你的第一个定制的Action需要继承一个抽象类AcAction。该Action应该覆盖AnAction的update()方法,且必须覆盖actionPerformed()方法。 AnAction类最好不要有任何类型的字段,这种限制是为了避免内存泄露。
update()方法实现的代码是可以使用或不可以使用这个Action。
actionPerformed()方法实现的是去执行一个被用户援引的action的代码。
public class firstAction extends AnAction {
//目前这样,是表示该插件无论何时都会执行
@Override
public void update(@NotNull AnActionEvent e) {
super.update(e);
}
@Override
public void actionPerformed(@NotNull AnActionEvent e) {
}
}
把你的Action注册到IDEA上
在实现firstAction这个类之前,要先把这个Action注册到IDEA上。 要注册一个Action,可以通过两种方式: 1. 在代码上声明 2. 在配置文件plugin.xml上的标签上进行声明
如果我们不在IDEA上注册该Action,则会提示:
为了注册该firstAction和设置其基本的参数,按下Alt+Shift+Enter。填好这个New Action表单来为firstAction设置参数。或者点击 注册操作。
新的表单如图:
表单字段解释:
| 字段 | 解释 |
|---|---|
| 操作 ID | 每个Action都必须有一个独立的id,最好使用限定名 |
| 类名 | 类的全限定名 |
| 名称 | 将会出现在菜单的文字 |
| 描述 | 要显示的提示语 |
| 添加到组 | Action将要被添加到的菜单或者工具栏 |
| 定位标记 | 表示该Action应该放的位置 |
如图,填好后,点击确定。我们就创建了一个在工具栏的一个Action了。 此时我们在plugin.xml文件中的标签,也自动添加了新的内容:
这里的内容跟我们之前在新Action的表单上填写的内容是 一致的。
以上,我们就在工具栏添加了我们的第一个按钮了。(虽然并没有什么卵用)
运行你的插件
我们点击 运行。
运行完之后,就会出现一个新的IDEA界面。我们使用这个新的IDEA界面随便创建一个项目,然后查看它的工具栏上的菜单tools。
这个Tools上的第一个Action就是我们刚刚编写的插件的内容了。