JetBrains IDE插件开发教程(三)——plugin.xml与命令
前言
前面看了关键的代码,还有一些设置没看完。
继续
正文
plugin.xml
plugin.xml是插件的配置文件
<idea-plugin>
<id>org.plugin.fitst</id>
<name>Fitst</name>
<vendor url="https://www.yourcompany.com">YourCompany</vendor>
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<depends>com.intellij.modules.platform</depends>
<resource-bundle>messages.MyMessageBundle</resource-bundle>
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="MyToolWindow" factoryClass="org.plugin.MyToolWindowFactory"
icon="AllIcons.Toolwindows.ToolWindowPalette"/>
</extensions>
</idea-plugin>
id标签:显然就是指的插件的标识符,类似于java的包名
name标签:插件的名字
vendor标签:开发者/公司信息
description标签:插件的描述
在<![CDATA[...]]中的内容,表示告诉xml后面的内容原样保留,不要解析。
这几个随便看看,不是很关键。
<depends>com.intellij.modules.platform</depends>
这个一看就是插件核心依赖,当然,具体有多大的作用,笔者也不是很清楚。哈哈哈哈哈。
<resource-bundle>messages.MyMessageBundle</resource-bundle>
资源包有关的配置——资源包的相对路径 + 基础名称
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="MyToolWindow" factoryClass="org.plugin.MyToolWindowFactory"
icon="AllIcons.Toolwindows.ToolWindowPalette"/>
</extensions>
注册扩展,
defaultExtensionNs: 是 "默认扩展命名空间"(default Extension Namespace)的缩写。决定了你在 <extensions> 标签内写的扩展,默认属于哪个组织/平台的扩展点,设置为 com.intellij,表示下面所有的扩展都是基于 JetBrains 官方平台的标准扩展点
id不必细说,
factoryClass:从英文意思看是工厂类,这让笔者想到了工厂模式,这个工厂应该就是插件被使用的工厂,插件用来创建"工具窗口"的工厂,懒加载,那么当左侧图标被点击,才会创建窗口。
icon就是图标的意思,不必过多关注。
简单的一些操作
终于看完关于代码和配置了,这就是通过模板生成的东西,这也太多了,都写了两章半。
接下来说说怎么启动吧。
可以直接点击最上面的按钮
![]()
也可以使用命令,如何启动,实际上是使用了一个bat文件

如果是linux或者macos就是上面的gradlew,笔者是window,就是使用的gradle.bat文件
gradlew是Gradle Wrapper的简写
gradle vs. gradlew - what's the difference? | Tom Gregory
https://tomgregory.com/gradle-vs-gradlew-differenceGradle Wrapper
https://docs.gradle.org/current/userguide/gradle_wrapper.htmlgradlew原来是一个脚本,不需要手动安装 Gradle,项目会自动下载并使用指定版本。
总之,不需要管这么多,先看一看help
./gradlew --help

下面有许多的命令出现,笔者本来不想复制过来了,但又一想,笔者以后也会使用这些命令。
那还是搞过来得了。
首先,使用的方式是option 或者task
USAGE: gradlew [option...] [task...]
[]表示可选
...表示可以有多个
先来看看option
Help
命令 作用 --help/-h显示帮助信息 --version/-v显示 Gradle 版本并退出 --show-version/-V显示版本信息,然后继续执行后面的任务
Logging
命令 作用 --quiet/-q只显示错误,其他都不显示 --warn/-w只显示警告和错误 --info/-i显示详细信息,适合排查问题 --debug/-d显示调试信息,最详细,会打印完整堆栈 --stacktrace/-s出错时打印堆栈信息 --full-stacktrace/-S打印超详细的堆栈(很冗长) --console控制台输出样式: plain(纯文本)、colored(彩色)、auto(默认)、rich、verbose
Configuration
命令 作用 --project-dir/-p指定项目目录(默认是当前目录) --project-prop/-P给构建脚本传参数,例如 -Pmyprop=myvalue--system-prop/-D给 JVM 传系统参数,例如 -Dfile.encoding=UTF-8--gradle-user-home/-g指定 Gradle 缓存目录(默认是 ~/.gradle)--offline离线模式,不联网下载依赖(依赖已缓存时用) --refresh-dependencies/-U强制刷新依赖,忽略缓存 --init-script/-I加载初始化脚本
Execution
| 命令 | 作用 |
|---|---|
--dry-run / -m |
模拟运行,只显示会执行哪些任务,不真执行 |
--exclude-task / -x |
排除某个任务,例如 -x test 跳过测试 |
--continuous / -t |
持续构建,文件改动后自动重新执行 |
--continue |
某个任务失败后继续执行其他任务(默认是停掉) |
Performance
命令 作用 --build-cache启用构建缓存,复用之前的编译结果,加速构建 --no-build-cache禁用构建缓存 --parallel并行构建多个项目(多模块时快很多) --configure-on-demand按需配置,大项目里只配置用到的模块 --max-workers设置最大并发工作线程数
Security
选项 作用 使用场景 --dependency-verification/-F设置依赖验证模式: strict(严格报错)、lenient(仅警告)、off(关闭)控制构建时是否强制校验依赖完整性 --export-keys导出项目中使用的所有 PGP 公钥到文件 分享公钥给团队或 CI 环境使用 --refresh-keys从公钥服务器重新下载最新 PGP 公钥 签名验证失败、公钥过期时刷新 --update-locks只更新指定模块的依赖锁定版本 需要升级某个依赖但保持其他依赖不变 --write-locks将当前所有依赖版本写入 gradle.lockfile固定依赖版本,防止自动升级引入不兼容 --write-verification-metadata/-M生成 verification-metadata.xml,记录依赖的哈希值和签名首次启用安全验证,防止依赖被篡改
Diagnostics
命令
作用
--profile生成构建性能报告,在
build/reports/profile里
--task-graph打印任务依赖图,不实际执行
--warning-mode警告模式:
all(显示所有)、fail(警告变错误)、summary(默认)、none
Daemon
命令 作用 --daemon使用守护进程(默认行为) --no-daemon不用守护进程,每次构建都新开 JVM(更慢但更干净) --status查看当前运行的守护进程状态 --stop停止所有守护进程 --foreground前台运行守护进程
Develocity
选项 作用 --develocity-plugin-version指定自动应用的 Develocity 插件版本(需 ≥ 4.4.0) --develocity-url指定 Develocity 服务器地址,用于上传 Build Scan --scan生成 Build Scan 构建扫描报告 --no-scan禁用 Build Scan 生成
先把全部的option搞过来,不知道有没有遗漏,以后需要那个option的时候再说。
task
接下来可以看看有那些task
执行命令
./gradlew tasks

会出现全部可使用的命令。
内容如下
| 分类 | Task 名称 | 作用 |
|---|---|---|
| Build Setup | init | 初始化一个新的 Gradle 项目 |
| updateDaemonJvm | 生成或更新 Gradle Daemon 的 JVM 配置标准 | |
| wrapper | 生成 Gradle Wrapper 文件(gradlew、gradlew.bat 等) | |
| Changelog | getChangelog | 获取变更日志 |
| initializeChangelog | 初始化变更日志 | |
| patchChangelog | 自动更新/打补丁变更日志版本 | |
| Documentation | javadoc | 为 main 源代码生成 Javadoc API 文档 |
| Help | artifactTransforms | 显示项目中可执行的 Artifact 转换 |
| buildEnvironment | 显示 buildscript 块中声明的所有依赖 | |
| dependencies | 显示项目中声明的所有依赖树 | |
| dependencyInsight | 深入查看某个特定依赖的解析详情 | |
| help | 显示帮助信息 | |
| javaToolchains | 显示检测到的 Java 工具链 | |
| kotlinDslAccessorsReport | 打印当前可用项目扩展的 Kotlin DSL 访问代码 | |
| outgoingVariants | 显示项目的 outgoing variants(输出变体) | |
| projects | 显示所有子项目 | |
| properties | 显示项目的所有属性 | |
| resolvableConfigurations | 显示可解析的配置项 | |
| tasks | 显示所有可运行的 task | |
| IDE | cleanIdea | 清理 IDEA 项目文件(.iml、.ipr) |
| idea | 生成 IDEA 项目文件(.iml、.ipr、.iws) | |
| openIdea | 用 IDEA 打开当前项目 | |
| IntelliJ Platform | buildPlugin | 构建插件并准备 ZIP 安装包(用于测试和发布) |
| buildSearchableOptions | 构建插件 UI 组件的搜索索引 | |
| cleanSandbox | 清理当前项目的沙盒目录 | |
| composedJar | 组合最终 Jar(合并基础 jar + 插桩后的类 + 子模块) | |
| generateManifest | 生成包含项目配置信息的 MANIFEST.MF | |
| initializeIntellijPlatformPlugin | 初始化 IntelliJ Platform Gradle 插件 | |
| instrumentCode | 执行代码插桩(处理 @Service 等注解) | |
| instrumentedJar | 创建包含插桩后类的 Jar 文件 | |
| instrumentTestCode | 对测试代码执行插桩 | |
| jarSearchableOptions | 创建包含可搜索选项的 Jar(随插件分发) | |
| patchPluginXml | 自动修改 plugin.xml(版本号、兼容版本等) | |
| prepareJarSearchableOptions | 为 jarSearchableOptions 准备内容 | |
| prepareSandbox | 准备沙盒环境(安装插件及其依赖) | |
| prepareSandbox_runIdeBackend | 为 runIdeBackend 准备沙盒 | |
| prepareSandbox_runIdeFrontend | 为 runIdeFrontend 准备沙盒 | |
| prepareTest | 准备测试任务 | |
| prepareTestIdePerformanceSandbox | 为性能测试准备沙盒 | |
| prepareTestSandbox | 为测试准备沙盒 | |
| printBundledModules | 打印当前目标 IDE 平台内置的模块列表 | |
| printBundledPlugins | 打印当前目标 IDE 平台内置的插件列表 | |
| printProductsReleases | 打印符合条件的 IDE 二进制版本列表 | |
| publishPlugin | 发布插件到 JetBrains 插件市场 | |
| runIde | 启动沙盒 IDE 实例并加载已构建的插件 | |
| runIdeBackend | 在 Split Mode 下启动 IDE 后端进程 | |
| runIdeFrontend | 在 Split Mode 下启动 JetBrains Client 前端 | |
| setupDependencies | 已废弃,旧版依赖设置方式 | |
| signPlugin | 用 Marketplace ZIP Signer 对插件 ZIP 签名 | |
| testIdePerformance | 在安装了插件的 IDE 上运行性能测试 | |
| verifyPlugin | 运行 IntelliJ Plugin Verifier,检查与指定 IDE 版本的二进制兼容性 | |
| verifyPluginProjectConfiguration | 验证插件项目配置是否正确 | |
| verifyPluginSignature | 用 Marketplace ZIP Signer 验证插件签名 | |
| verifyPluginStructure | 验证 plugin.xml 和插件包结构是否完整正确 | |
| Signing | generatePgpKeys | 生成新的 PGP 密钥对 |
| uploadPublicPgpKey | 上传公钥到密钥服务器 | |
| Validation | checkSigningConfiguration | 检查签名配置是否正确设置 |
| Verification | check | 运行所有检查(测试 + 验证) |
| checkKotlinGradlePluginConfigurationErrors | 检查 Kotlin Gradle 插件是否报告了配置错误(编译前自动运行) | |
| test | 运行测试套件 | |
| Rules(动态规则) | clean<TaskName> | 清理指定 task 的输出文件 |
| build<ConfigurationName> | 组装指定配置的所有产物 |
task有点多,以后需要的时候再说,比如打包之类的事情。
所以说,启动项目使用命令如下
./gradlew runIde
启动后

可以发现跳出一个新的idea。
总结
ok了,看了最后的配置文件,也顺便看了看命令。
以后肯定有用。
到时候再说,就这样。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)