效果
自己也編寫了一個(gè)代碼生成器插件并發(fā)布到了倉庫中,可以直接搜索“Neo Coder”,開發(fā)的這個(gè)插件是位于Tool Windows里面的,如下
https://github.com/SimonAlong/Neo
下面講述下,如果創(chuàng)建自己的idea插件
1.建項(xiàng)目
創(chuàng)建idea插件項(xiàng)目很簡單,idea對(duì)應(yīng)的項(xiàng)目就有,如下
其中plugin.xml就是idea給我們的配置文件,后續(xù)要將我們的插件在哪些位置限制,都在該文件中配置即可
2.寫代碼
項(xiàng)目創(chuàng)建完畢就可以開發(fā)我們自己的插件了,插件的開發(fā)可以根據(jù)idea的插件包,進(jìn)行快速的開發(fā)
編寫基本代碼
我們這里創(chuàng)建Action,該Action就是一個(gè)動(dòng)作
創(chuàng)建Action
添加之后,在plugin.xml中就有如下的配置
<actions>
<!-- Add your actions here -->
<action id="test" class="com.simonalong.test.test" text="test" description="test">
<add-to-group group-id="ViewMenu" anchor="first"/>
</action>
</actions>
對(duì)應(yīng)的test類
public class test extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getData(PlatformDataKeys.PROJECT);
Messages.showMessageDialog(project, "helloword", "test", Messages.getInformationIcon());
}
}
3.調(diào)試
在配置中,如下,直接運(yùn)行即可,運(yùn)行會(huì)重新啟動(dòng)一個(gè)新的idea,記得新的idea也是需要激活才行,所以用一些激活碼激活即可(怎么獲取你懂得)
在這里就有我們添加的,其中文案對(duì)應(yīng)的就是我們上面的text
注意:
如果重新打開,有些時(shí)候 Use classpath of module顯示為[none],如果是這種情況請(qǐng)看后面的問題
4.試用
當(dāng)我們開發(fā)完我們的,我們就可以將我們的程序發(fā)布出去,但是在發(fā)布之前,我們可以給其他小伙伴或者自己的其他程序先安裝試用下,這個(gè)時(shí)候只需要build出來我們自己的jar包,然后安裝到我們的插件庫就可以了
編寫插件對(duì)外文案
如果不編輯則采用的就是默認(rèn)的
打包
打包出來如下
本地安裝
打包之后,只需要將如上的jar包安裝即可,如下
從本地安裝即可
5.發(fā)布
當(dāng)也試用完畢后,沒什么問題,就可以將自己的插件發(fā)布到idea的市場上面
https://plugins.jetbrains.com/plugin/add#teamcity
如果發(fā)布成功,比如如下,而且會(huì)有一封郵件,表示插件會(huì)進(jìn)行審核,在1~2個(gè)工作日之后才會(huì)對(duì)外公開
[圖片上傳失敗...(image-54dd49-1598283563586)]
6.問題
1.idea插件項(xiàng)目再次打開時(shí)候無法運(yùn)行
原因是idea會(huì)將打開的項(xiàng)目默認(rèn)為java項(xiàng)目,只需要手動(dòng)將根目錄下面的.idea文件下的*.iml中的Model從"JAVA_MODULE"修改為"PLUGIN_MODULE"即可,就可以運(yùn)行了
2.編譯啟動(dòng)上報(bào)錯(cuò)誤
Plugin Error
Problems found loading plugins:
Duplicate plugin id:com.your.company.unique.plugin.id
我這里其實(shí)是修改了自己的plugin id的,但是不知道為什么還有上面這個(gè)錯(cuò)誤,后來重新創(chuàng)建了一個(gè)項(xiàng)目,將代碼都拷貝過去,然后就好了
3.發(fā)布時(shí)候報(bào)如下問題
Invalid plugin descriptor 'plugin.xml': value of <description> must not have default 'Enter short description for your plugin here.' or 'most HTML tags may be used'
發(fā)現(xiàn)自己的描述中有如下這么一句話,這句話是之前舊的描述,我只是在上面添加了一行,刪除就可以了
<em>most HTML tags may be used</em>
4.發(fā)布時(shí)候上報(bào)問題
[圖片上傳失敗...(image-dfc664-1598283563586)]
Plugin has no dependencies. Please check the documentation.
只需要將plugin.xml下面的注釋取消即可
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
或者將下面的添加即可
<depends>com.intellij.modules.lang</depends>
補(bǔ)充:
1.編寫界面
對(duì)于需要編寫界面的部分,可以采用Swing的手寫方式,也可以采用idea提供的這個(gè)界面拖拽公共。
前面調(diào)用部分寫完之后,就可以在idea點(diǎn)擊了,但是沒有界面的話,還是不好交互,我們直接用idea中的拖拽方式進(jìn)行開發(fā)界面即可
創(chuàng)建完就如下,然后就可以在上面通過拖拽的方式,開發(fā)自己的界面了
提示:
開發(fā)后界面的查看可以直接點(diǎn)擊右鍵預(yù)覽,不用啟動(dòng)也可以看界面效果,只能看界面效果不能看功能