LivePlugin社区资源:最佳实践、示例插件和常见问题解答
LivePlugin社区资源:最佳实践、示例插件和常见问题解答
LivePlugin是一款专为IntelliJ IDE设计的插件,它允许开发者使用Kotlin和Groovy在运行时创建和测试插件,无需繁琐的项目配置和IDE重启,极大地提升了插件开发效率。
🌟 核心优势与使用场景
LivePlugin为开发者带来了诸多便利,主要体现在以下几个方面:
- 极简设置:无需为插件开发单独设置项目,直接在IntelliJ IDE中即可进行开发
- 快速反馈:插件在IDE的同一JVM实例中(重新)加载,无需重启IDE
- 实用API:提供了小型API,包含常见IDE API的入口点
它的实用场景包括:
- 项目特定工作流自动化
- 将shell脚本与IDE集成
- 原型插件开发,实验IntelliJ API
🚀 最佳实践指南
插件开发基础
开始使用LivePlugin时,建议先确保"hello world"示例能正常工作:
- 在"Live Plugins"工具窗口中选择"hello-world"插件,点击"Run"按钮执行插件(使用"Run Plugin"操作,快捷键为
ctrl+shift+L或alt+C, alt+E)。它应该会显示一条消息。
-
在
plugin.groovy/plugin.kts中做一个小修改,然后重新运行插件。第二次运行时,插件的先前版本将在代码再次求值之前被卸载。 -
修改
plugin.groovy/plugin.kts文件,使其编译/运行失败。你应该会在"Run"工具窗口中看到错误消息。
插件管理技巧
LivePlugin的工具窗口提供了多种设置选项,合理使用这些设置可以提高开发效率:
- Run Plugins on IDE Start:在IDE启动时运行所有插件
- Run Project Specific Plugins:当项目打开时运行
.live-plugins项目目录中的所有插件,并在项目关闭时卸载它们 - Add LivePlugin and IDE Jars to Project:将LivePlugin和IDE的jar添加到当前项目作为库(请参见"Project Settings -> Modules")
对于Kotlin插件,单个plugin.kts文件应该已经具有自动完成和代码导航功能。多个Kotlin文件目前不会被高亮显示(参见相关YouTrack问题),但应该可以编译和运行。
IntelliJ API学习资源
要深入学习IntelliJ API,可以参考以下资源:
- 阅读(或至少浏览)插件开发生 fundamentals
- 通过克隆或在GitHub上浏览IntelliJ源代码
- PluginUtil类和liveplugin包可能有一些探索IntelliJ API的良好起点
💡 示例插件集合
LivePlugin提供了丰富的示例插件,涵盖各种常见功能。这些示例可以通过"Live Plugins"工具窗口中的"Plus"按钮("Add Plugin"操作)添加。
基础示例
Groovy版Hello World:
import static liveplugin.PluginUtil.show
show("Hello world") // 显示带有"Hello world"文本的气球通知弹出窗口
Kotlin版插入新行操作:
import com.intellij.openapi.actionSystem.AnActionEvent
import liveplugin.*
// 在当前行上方插入新行的操作
registerAction(id = "Insert New Line Above", keyStroke = "ctrl alt shift ENTER") { event: AnActionEvent ->
val project = event.project ?: return@registerAction
val editor = event.editor ?: return@registerAction
executeCommand(editor.document, project) { document ->
val caretModel = editor.caretModel
val lineStartOffset = document.getLineStartOffset(caretModel.logicalPosition.line)
document.insertString(lineStartOffset, "\n")
caretModel.moveToOffset(caretModel.offset + 1)
}
}
show("Loaded 'Insert New Line Above' action<br/>Use 'ctrl+alt+shift+Enter' to run it")
高级示例
项目中还提供了更多高级示例,包括:
- ide-actions:IDE操作相关插件
- java-inspection:Java代码检查插件
- java-intention:Java意图操作插件
- kotlin-inspection:Kotlin代码检查插件
- kotlin-intention:Kotlin意图操作插件
- multiple-src-files:多源文件插件
- popup-menu:弹出菜单插件
- text-editor:文本编辑器相关插件
这些示例位于plugin-examples/groovy/和plugin-examples/kotlin/目录下,可以作为开发自定义插件的良好起点。
❓ 常见问题解答
开发问题
Q: 如何处理编译或运行错误?
A: 如果插件代码编译或运行失败,错误消息会显示在"Run"工具窗口中。仔细检查错误信息,修正代码后重新运行插件即可。
Q: 为什么会出现类加载错误,例如"expected type kotlin.String but was kotlin.String"?
A: 这是由于Kotlin和IntelliJ中存在完全相同的全限定名类,导致类加载器加载了错误的类。LivePlugin通过将Kotlin编译器API包装在单独的模块中来解决这个问题,详细信息可以参考kotlin-compiler-wrapper/readme.md。
使用问题
Q: 如何在IDE启动时自动运行插件?
A: 在"Live Plugins"工具窗口中勾选"Run Plugins on IDE Start"选项,这样所有插件将在IDE启动时自动运行。
Q: 如何为项目添加特定插件?
A: 可以使用"Run Project Specific Plugins"选项,它会在项目打开时运行.live-plugins项目目录中的所有插件,并在项目关闭时卸载它们。
Q: 如何获得插件代码的自动完成和代码导航功能?
A: 对于Kotlin插件,单个plugin.kts文件应该已经具有自动完成和代码导航功能。对于Groovy插件,可以使用"Add LivePlugin and IDE Jars to Project"选项,将相关jar添加到项目中作为库。
📚 进一步学习资源
- IntellijApiCheatSheet.md:IntelliJ API速查表
- CONTRIBUTING.md:贡献指南
- 项目WIKI:包含更多高级用法和示例
当你的插件已经成熟,你可以将其迁移到适当的插件项目中,仍然使用live plugin进行重新加载,然后可能将其转换为动态插件。
如果有任何问题或建议,请随时报告问题(即使只是一个问题,也可以报告)。
更多推荐




所有评论(0)