IntelliJ IDEA插件开发系列教程之新建项目

简介: Smart Input Source插件推荐给大家使用,它可以实现根据输入处上下文自动切换到对应的输入法,将开发者从杂乱繁琐的输入法切换中解救出来。具体效果请查看《IntelliJ IDEA插件实现自动切换输入法》,欢迎到插件市场下载安装。IntelliJ IDEA插件开发系列教程综述IntelliJ IDEA插件开发系列教程之开发思路IntelliJ IDEA插件开发系列教程之新建项目进行代码演

Smart Input Source插件推荐给大家使用,它可以实现根据输入处上下文自动切换到对应的输入法,将开发者从杂乱繁琐的输入法切换中解救出来。具体效果请查看《IntelliJ IDEA插件实现自动切换输入法》,欢迎到插件市场下载安装。

  1. IntelliJ IDEA插件开发系列教程综述
  2. IntelliJ IDEA插件开发系列教程之开发思路
  3. IntelliJ IDEA插件开发系列教程之新建项目

进行代码演示的项目可以从Github获取idea-plugin-demo

新建项目

新建项目比较简单,操作路径File->New->Project->IDE Plugin,开发插件可以使用Java和Kotlin两种语言,Kotlin我也不会,但是IntelliJ Platform很多代码是用Kotlin写的,不过没有关系,大概能看懂个意思会使用其API就行。JDK最好选择17及以上,因为2022版本IDEA已经是基于JDK17开发的。

项目构建

项目创建完成之后就开始自动构建,最耗时的步骤在于下载用于调试的idea完整版,因此有600多兆,只有耐心的等待下载完成,如果期间失败了,点击左上角圆圈刷新后继续。

依赖下载完成之后可以打开Gradle的ToolWindow,点击buildPlugin就可以开始编译整个项目,并在项目根目录下面生成build文件夹。

项目结构

新建项目编译完后结构如下所示,gradle、build.gradel.kts、settings.gradel.kts、gradlew、gradlew.bat都是与Gradle相关的文件,其中gradle文件夹包含了完整的gradle运行环境,是为了解决版本迭代对项目的影响,一般不要动,build.gradel.kts类似Maven的Pom文件,配置了项目相关的依赖和插件等。gradlew、gradlew.bat分别是Linux系统和windows系统的命令工具,一般不要动。

build是编译输出的产物,其中distributions就是最终生成的插件,可以传播并从disk进行安装,idea-sandbox是调试idea的沙箱环境,其中idea-sandbox/system/log/idea.log是调试时idea打的日志。

plugin.xml文件是插件非常重要的配置文件,IntelliJ Platform加载插件的时候会首先读取插件的这个文件进行加载。

pluginIcon.svg是插件的ICON文件,不过需要SVG格式的图片,后面会讲解去哪里可以找到合适的ICON资源。

Gradle管理

最新版的IDEA插件项目已经是采用Kotlin版Gradle进行依赖管理,如果你看一些比较老的插件代码,它们可能采用Maven或者Groovy版Gradle进行依赖管理,Maven版本的应该是很难见到了,但是Groovy版Gradle管理依赖的插件很是有很多,Groovy版Gradle的配置配置文件名为build.gradle,两个版本的配置文件的语法是非常不同的,所以不要搞错了。

plugins是指Gradle的插件,我们整个项目的语言环境是Java,所以我们需要使用Java的插件,另外intellij也提供了Gradel插件方便我们编译调试等。group和version类似Maven,repositories中指定使用maven的中央仓库,dependencies管理项目的依赖,implementation指定依赖的使用范围实在编译期和运行期,依赖定位跟maven一样使用groupId、artificId、version。

intellij里面配置插件调试的运行环境,version执行IDEA的版本,type指定IDEA的类型,IC表示community版本,IU表示ultimate版本,一般使用community版进行调试就好了,ultimate版本调试依然需要输入License。

targetCompatibility表示依赖的Jdk版本,如果你是windows系统可能出现使用错误的编码导致编译失败,所以可以在这里指定编码options.encoding = "UTF-8"。sinceBuild表示插件支持的IDEA起始版本,untilBuild表示插件支持的IDEA最大版本,只有在支持范围之内的IDEA版本才能使用该插件,这里的IDEA版本看着有点奇怪,它其实是IDEA的编译版本,区别于IDEA的发行版本“2022.1.4”,不过他们之间也有一定的规则,比如发行版本“2022.1.4”对应的编译版本号前缀应该是“221.”,年份后两位22加中间的1。

plugins {
    id("java")
    id("org.jetbrains.intellij") version "1.9.0"
}

group = "com.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework:spring-web:5.3.23")
    implementation("com.squareup.okhttp3:okhttp:4.7.2")
    implementation("com.alibaba:fastjson:1.2.54.sec06")
}

// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
    version.set("2022.1.4")
    type.set("IC") // Target IDE Platform
}

tasks {
    // Set the JVM compatibility versions
    withType<JavaCompile> {
        sourceCompatibility = "11"
        targetCompatibility = "11"
        options.encoding = "UTF-8"
    }

    patchPluginXml {
        sinceBuild.set("221")
        untilBuild.set("231.*")
    }

    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"))
    }
}

plugin.xml

plugin.xml的使用会贯穿整个教程,所以这里只是简单讲解一下,后面遇到具体的功能实现再具体讲解。require-restart可以配置安装或更新插件时是否需要重启Idea。id表示该插件的id,需要唯一。name表示该插件的名称,需要使用英文,单词首字符大写,单词之间空格隔开。vender表示开发者信息。description表示插件的描述信息,支持简单html标签,会展示在插件的介绍页面,其中一定要包含英文介绍,否则无法在插件市场上架。depends表示插件的依赖,必须依赖的是platform代码。extensions表示平台的拓展点实现,IntelliJ Platform采用拓展与被拓展架构,Platform里面预先开发好了很多可以拓展的点,插件只需要实现对应的拓展,并在这里注册。具体在后面再讲吧。

<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin require-restart="true">
    <!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
    <id>com.example.plugin-demo</id>

    <!-- Public plugin name should be written in Title Case.
         Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
    <name>Plugin demo</name>

    <!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
    <vendor email="support@yourcompany.com" url="https://www.yourcompany.com">YourCompany</vendor>

    <!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
         Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
         Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
    <description><![CDATA[
    Enter short description for your plugin here.<br>
    <em>most HTML tags may be used</em>
  ]]></description>

    <!-- Product and plugin compatibility requirements.
         Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
    <depends>com.intellij.modules.platform</depends>

    <!-- Extension points defined by the plugin.
         Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
    <extensions defaultExtensionNs="com.intellij">

    </extensions>
</idea-plugin>
相关文章
|
8天前
|
IDE Linux 开发工具
IntelliJ IDEA最新版安装下载教程及安装教程(附安装包)
本文介绍IDEA的下载与安装教程,包含获取下载地址、安装步骤及激活方法。需注意安装路径为英文目录,运行激活脚本时需管理员权限。按指引操作即可完成激活并使用。
302 0
|
5月前
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 VScode 和 IDEA 中怎么用?手把手教程来了
沉默王二分享了通义灵码的使用教程,这款插件集成了DeepSeek-R1和Qwen等模型,支持Java、Python、Go等多种编程语言,适用于IDEA、VSCode等开发环境。它不仅能提供智能问答、代码补全和Bug修复功能,还能通过“AI程序员”实现多文件代码修改。体验流畅,算力充足,无需担心限流问题。文章详细介绍了安装步骤及各项功能的实际操作,展示了其在提升开发效率方面的强大实力。目前,通义灵码正持续优化,未来将带来更多惊喜。
760 1
|
4月前
|
监控 测试技术 开发者
IDEA项目调试你都会用了么,快看看是否有你不知道的调试技巧
在IntelliJ IDEA中,熟练运用调试工具可显著提升开发效率。通过设置断点、单步执行、变量监控等功能,快速定位问题并优化代码性能。此外,掌握多线程调试、异常处理及远程调试技巧也至关重要。为提高效率,建议合理使用条件断点、快捷键与日志监控,同时不断学习总结经验。若觉得有用,别忘了点赞收藏!
IDEA项目调试你都会用了么,快看看是否有你不知道的调试技巧
|
4月前
|
IDE Java 开发工具
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
IntelliJ IDEA创建Java项目的图文详细步骤,手把手带你创建Java项目
696 10
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
|
3月前
|
JSON Java 数据库连接
IDEA的插件大总汇 (让你的工作效率大大提高!)
我是小假 期待与你的下一次相遇 ~
641 5
|
4月前
|
数据安全/隐私保护
IntelliJ IDEA使用技巧:在一个项目中如何正确引用其他子模块。
我希望这个解答可以帮助你,有了这些知识,你可以更好地使用IntelliJ IDEA并轻松处理项目中的子模块。
373 19
|
4月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
321 27
|
6月前
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
555 78
|
6月前
|
IDE 程序员 开发工具
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
1093 13
|
Java Windows
IntelliJ IDEA 2020.2激活破解教程
IntelliJ IDEA 2020.2激活破解教程
2190 1
IntelliJ IDEA 2020.2激活破解教程