前言

前面看了关键的代码,还有一些设置没看完。

继续

正文

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 Gregoryhttps://tomgregory.com/gradle-vs-gradlew-differenceGradle Wrapperhttps://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(默认)、richverbose

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了,看了最后的配置文件,也顺便看了看命令。

以后肯定有用。

到时候再说,就这样。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐