使用 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 {@Overridepublic 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 的开发者,功能上并无限制。