JetBrains plugin 的几个坑
-
官方文档
https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started.html (流程说明)
https://github.com/JetBrains/intellij-sdk-docs (有些具体的例子) -
一个比较简单的plugin 的代码
https://github.com/esalter-va/extract-json-tags/blob/master/src/main/java/ExtractJSONTags.java -
一个比较全的
https://cloud.tencent.com/developer/article/1348741 (devKit 没看完太长了) -
其他参考过的
https://blog.csdn.net/csdn_xpw/article/details/78946781
https://blog.csdn.net/ExcellentYuXiao/article/details/80273109
https://www.jianshu.com/p/722841c6d0a9
https://www.jianshu.com/p/eafdf745e607
https://www.jb51.net/article/135535.htm
两种创建project的方式
dev kit
graddle
注意的几点:
- 两种方式的目录结构是不同的
- 两种方式都可以右键src目录新建action
- 两种方式调试时启动的idea实例不同
graddle 是 一个community 的intellij Idea 的 sandbox, 这个sandbox 在第一次运行时要下载,很耗时
devkit 是启动一个当前版本的 intelij Idea 好像 - 对jetbrain 全家桶的支持,传说只要去掉
plugin.xml
中的的一个注释就可以了
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
- graddle 模版中的发布方法有问题,不知道是不是因为我的版本有些老,具体的问题是,jetbrain的发布平台不在支持用户名密码的发布,而是改用token。但是发布工具中依然使用用户名和密码的方式。(文档中就只提到了这种方式)
devkit 的发布流程是正常的,因为是打好jar包上传的。。。
文档中说graddle 发布的前提是帐号已经发布过才可以,并不理解这段话的意思
To do so, you will need to have already published the plugin to the plugin repository. For detailed information, please see the guide to publishing a plugin
Build
dev-kit 的build:
build 使用的sdk版本:
上面的红圈,感觉用1.8 可以支持大部分的JetBrain 产品。9.0的话,一些老版本会不支持。
下面的红圈,不要选太低的,否则编译报错,8应该够用。
发布
我发布成功的一个例子
https://plugins.jetbrains.com/plugin/11556-generate-struct-tags-for-golang
dev-kit 版的代码:
https://github.com/harryhare/go_struct_tag_plugin_jetbrains
graddle 版的代码:
https://github.com/harryhare/go_struct_tag_plugin_jetbrains_gradle
https://plugins.jetbrains.com/ 上 upload plugin 的位置:
token /密码的管理:
https://hub.jetbrains.com ->profile -> authentication
审核
审核过后就可以在browse repositories( preferences -> plugins -> 下排中间的那个按钮) 中看的自己发布的插件了: )
遇到的一个坑
不能直接编辑文件,否则报这样的错:
Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction())
其他
新建的graddle 项目没有java 文件夹的原因是 graddle 没有sync 完,这一步很慢的,要有耐心。。。
更多推荐
所有评论(0)