使用 Maven 开发 IntelliJ IDEA 插件
使用 Maven 开发 IntelliJ IDEA 插件的完整流程
1. 创建 Maven 项目
1.1 使用 IntelliJ 创建 Maven 项目
- 打开 IntelliJ IDEA,点击
File > New > Project
。 - 选择
Maven
,填写项目名称和 GroupId,例如:- GroupId:
com.example
- ArtifactId:
my-intellij-plugin
- GroupId:
- 完成后点击
Finish
,生成一个基本的 Maven 项目。
2. 配置 Maven 项目
2.1 修改 pom.xml
添加 IntelliJ Platform 的依赖和插件打包配置:
示例 pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-intellij-plugin</artifactId>
<version>1.0.0</version>
<properties>
<!-- IntelliJ Platform 版本 -->
<idea.version>2023.1</idea.version>
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<dependencies>
<!-- IntelliJ Platform SDK -->
<dependency>
<groupId>com.jetbrains.intellij.platform</groupId>
<artifactId>platform-api</artifactId>
<version>${idea.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.jetbrains.intellij.platform</groupId>
<artifactId>platform-impl</artifactId>
<version>${idea.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Maven 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<!-- IntelliJ IDEA Plugin 插件 -->
<plugin>
<groupId>org.jetbrains.intellij</groupId>
<artifactId>intellij-maven-plugin</artifactId>
<version>1.14.0</version>
<configuration>
<!-- 定义插件的开发平台 -->
<ideaVersion>${idea.version}</ideaVersion>
<downloadSources>true</downloadSources>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. 插件描述文件
在 src/main/resources/META-INF/
下创建 plugin.xml
,用于描述插件的核心信息和功能。
示例 plugin.xml
:
<idea-plugin>
<id>com.example.myplugin</id>
<name>My IntelliJ Plugin</name>
<version>1.0.0</version>
<vendor email="you@example.com" url="https://example.com">Your Name</vendor>
<!-- 插件扩展点 -->
<extensions defaultExtensionNs="com.intellij">
<actions>
<action id="MyPlugin.Action" class="com.example.actions.MyAction" text="Generate Code"
description="Generate code based on table script">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
</action>
</actions>
</extensions>
</idea-plugin>
4. 实现插件功能
4.1 插件主逻辑
在 src/main/java/com/example/actions/
下创建 MyAction.java
,实现右键菜单触发的动作。
package com.example.actions;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
public class MyAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// 获取当前项目
Project project = e.getProject();
if (project == null) {
Messages.showErrorDialog("No project found", "Error");
return;
}
// 示例:生成的代码
String generatedCode = """
public class User {
private int id;
private String name;
private String email;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}
""";
// 显示结果
Messages.showInfoMessage(project, "Generated Code:\n" + generatedCode, "Code Generation");
}
}
5. 打包和运行插件
5.1 打包插件
运行以下 Maven 命令,将插件打包为 .zip
文件:
mvn package
生成的插件包会在 target/
目录下,文件名如 my-intellij-plugin-1.0.0.zip
。
5.2 在 IntelliJ 中运行和测试
- 在 IntelliJ IDEA 中打开插件项目。
- 点击
Run
或执行以下命令:
这将启动一个带有插件的新 IntelliJ 实例,用于测试插件功能。mvn intellij:run
5.3 手动安装插件
- 将打包的
.zip
文件上传到 IntelliJ:- 菜单:
File > Settings > Plugins > Install Plugin from Disk
。
- 菜单:
- 重启 IntelliJ,测试插件。
6. 高阶功能扩展
6.1 动态调用 Python 脚本
可以在插件中调用 Python 服务完成复杂任务,例如代码生成。
示例:调用 Python REST 服务
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class PythonIntegration {
public static String invokePythonAPI(String payload) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("http://localhost:5000/generate"))
.POST(HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
}
}
6.2 与项目文件交互
让插件直接修改项目中的代码文件。
示例:写入代码到文件
import com.intellij.openapi.vfs.VirtualFile;
public class FileWriter {
public static void writeToFile(VirtualFile file, String content) throws Exception {
file.setBinaryContent(content.getBytes());
}
}
7. 发布插件
7.1 打包插件
运行 mvn package
,生成 .zip
文件。
7.2 发布到 JetBrains 插件市场
- 登录 JetBrains Plugin Repository。
- 上传
.zip
文件,并填写插件描述。
总结
通过 Maven 开发 IntelliJ 插件,与 Gradle 类似,只需修改 pom.xml
并添加 IntelliJ Platform 的依赖。Maven 更适合习惯于使用 Maven 的开发者,功能上并无限制。