当前位置: 首页 > article >正文

使用 Maven 开发 IntelliJ IDEA 插件

使用 Maven 开发 IntelliJ IDEA 插件的完整流程

1. 创建 Maven 项目

1.1 使用 IntelliJ 创建 Maven 项目
  1. 打开 IntelliJ IDEA,点击 File > New > Project
  2. 选择 Maven,填写项目名称和 GroupId,例如:
    • GroupId: com.example
    • ArtifactId: my-intellij-plugin
  3. 完成后点击 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 中运行和测试
  1. 在 IntelliJ IDEA 中打开插件项目。
  2. 点击 Run 或执行以下命令:
    mvn intellij:run
    
    这将启动一个带有插件的新 IntelliJ 实例,用于测试插件功能。
5.3 手动安装插件
  1. 将打包的 .zip 文件上传到 IntelliJ:
    • 菜单:File > Settings > Plugins > Install Plugin from Disk
  2. 重启 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 插件市场
  1. 登录 JetBrains Plugin Repository。
  2. 上传 .zip 文件,并填写插件描述。

总结

通过 Maven 开发 IntelliJ 插件,与 Gradle 类似,只需修改 pom.xml 并添加 IntelliJ Platform 的依赖。Maven 更适合习惯于使用 Maven 的开发者,功能上并无限制。


http://www.kler.cn/a/412889.html

相关文章:

  • Uniapp开发下拉刷新功能onPullDownRefresh/onReachBottom
  • JavaScript核心语法(3)
  • linux-FTP服务器配置
  • 【VRChat 全身动捕】VIVE 手柄改 tracker 定位器教程,低成本光学动捕解决方案(持续更新中2024.11.26)
  • NLP论文速读(剑桥大学出品)|分解和利用专家模型中的偏好进行改进视觉模型的可信度
  • 深入理解 Java 基本语法之运算符
  • 蓝牙MCU单片机8k高回报率无线应用
  • HCIP——堆叠技术实验配置
  • Redis(4):主从复制
  • MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例
  • 3101.交替子数组计数
  • 2023年12月GESPC++一级真题解析
  • FFmpeg 音视频同步问题
  • 单片机将图片数组调出来显示MPU8_8bpp_Memory_Write
  • springboot视频网站系统的设计与实现(代码+数据库+LW)
  • 代码随想录打卡DAY20
  • C/C++基础知识复习(30)
  • 基于LLaMA-Factory微调Qwen2.5-1.5B-Instruct
  • 利用ChatGPT寻找科研创新点的方法
  • 从入门到精通数据结构----四大排序(上)
  • 搜索二维矩阵
  • D81【 python 接口自动化学习】- python基础之HTTP
  • CVE-2022-26201
  • JVM调优篇之JVM基础入门AND字节码文件解读
  • 2.mybatis整体配置
  • Scrapy管道设置和数据保存