從 0 到 1 開發(fā)一個 IntelliJ IDEA 插件
往期熱門文章:
1、別瞎寫工具類了,Spring自帶的不香嗎? 2、SpringBoot + Redis:模擬 10w 人的秒殺搶單 3、如何選擇合適的分布式ID生成方案 4、本機號碼一鍵登錄原理與應用 5、比 SpringBoot更快,更輕,更小! 寫 Java 代碼的時候,經(jīng)常會涉及到重復性的操作,這個時候就會想要是有這樣一個插件就好了,如果是大家都會遇到的場景,IDE或許已經(jīng)提供了,再不然也有可能有人編寫了相關(guān)的插件。
要是這個操作是你們的編碼環(huán)境特有的,那就只能自己寫工具了。所以這里來學學如何編寫IDEA 插件,讓自己的編程環(huán)境更加強大,更好的進行裝逼。
開發(fā)環(huán)境
IntelliJ IDEA Community Edition
IntelliJ IDEA Community Edition 源碼
Plugin DevKit 插件
IntelliJ Platform SDK
git clone --depth 1 git://git.jetbrains.org/idea/community.git idea
添加 IDEA jdk
IDEA jdk?來運行插件:
/lib/tools.jar?到classpath中。配置 IntelliJ Platform SDK
File | Project Structure?新建一個?IntelliJ Platform SDK:
IDEA jdk:


第一個插件
新建工程
IntellJ Platform Plugin,然后Project SDK指定剛剛新建的plugin sdk:

src和resources。src是插件代碼目錄,resource是插件資源目錄,其中META-INF/plugin.xml是插件的描述文件,就像Java web項目的web.xml一樣。<idea-plugin>
??<id>com.your.company.unique.plugin.idid>
??<name>Plugin display name herename>
??<version>1.0version>
??<vendor?email="[email protected]"?url="http://www.yourcompany.com">YourCompanyvendor>
??<description>??????Enter short description for your plugin here.
??????most HTML tags may be used
????]]>description>
??<change-notes>??????Add change notes here.
??????most HTML tags may be used
????]]>
??change-notes>
??
??<idea-version?since-build="145.0"/>
??
??
??<extensions?defaultExtensionNs="com.intellij">
????
??extensions>
??<actions>
????
??actions>
idea-plugin>
新建一個 ActionAnAction?類,這個類有一個虛方法?actionPerformed,這個方法會在每次菜單被點擊時調(diào)用。AnAction?類,在?actionPerformed?方法中實現(xiàn)插件邏輯plugin.xml?注冊public?class?TextBoxes?extends?AnAction?{
????// 如果通過Java代碼來注冊,這個構(gòu)造函數(shù)會被調(diào)用,傳給父類的字符串會被作為菜單項的名稱
????// 如果你通過plugin.xml來注冊,可以忽略這個構(gòu)造函數(shù)
????public?TextBoxes()?{
????????// 設置菜單項名稱
????????super("Text _Boxes");
????????// 還可以設置菜單項名稱,描述,圖標
????????// super("Text _Boxes","Item description",IconLoader.getIcon("/Mypackage/icon.png"));
????}
?
????public?void?actionPerformed(AnActionEvent event)?{
????????Project project = event.getData(PlatformDataKeys.PROJECT);
????????String txt= Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon());
????????Messages.showMessageDialog(project, "Hello, "?+ txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon());
????}
}
plugin.xml中注冊這個Action:?class="Mypackage.TextBoxes"?text="Text _Boxes"?description="A test menu item"?/>
??<group?id="MyPlugin.SampleMenu"?text="_Sample Menu"?description="Sample menu">
????<add-to-group?group-id="MainMenu"?anchor="last"??/>
???????"Myplugin.Textboxes"
??group>



運行插件
參考資料
Setting Up a Development Environment
How to make an IntelliJ IDEA plugin in less than 30 minutes
轉(zhuǎn)自:木杉是天才
鏈接:https://www.cnblogs.com/mushan/p/12275581.html
最近熱文閱讀:
1、如何選擇合適的分布式ID生成方案 2、面試題:為什么數(shù)據(jù)庫連接池不采用 IO 多路復用? 3、SpringBoot 配置文件敏感信息如何加密? 4、線上訂單號重復了?一招搞定它! 5、一款高顏值的MySQL管理工具:Sequel Pro 6、2021 年 GitHub 最佳開源軟件榜單 7、Logback這樣配置,性能提升10倍! 8、揭曉 2021 編程語言排行榜 9、還在用策略模式解決 if-else?Map+函數(shù)式接口方法才是YYDS! 10、牛客網(wǎng):為什么不能將實數(shù)作為 HashMap 的 key? 關(guān)注公眾號,你想要的Java都在這里
評論
圖片
表情
