intellij idea的插件開發小結


最近在做一個intellij idea的插件,作用是讀取數據庫的表及字段的信息和預先定義的模板來生成代碼文件(實體,service,springmvc中的controller,freemark文件等等)。

查找了很多資料,發現intellij idea插件開發的資料不僅少而且很多文檔過期了,看了下官網的下載資料,到版本8之後就沒有發佈插件開發的api和例子資料包。開發中遇到最好的開發文檔是《IntelliJ IDEA Plugin Development》(此文檔的鏈接:http://wenku.baidu.com/link?url=0wRKHIJA7PSE4OcQBx9nVw1tcLXJsF3SNQcVEvf_lPkqdB-YE0q7GKnX6iGdRpkcJkxqODjQja0nARMx8zwkDacUqOKFpI6V0_V_-kGpfk)基本概念和例子可以在這篇文檔中很好地體現,在這裏就不重複了。這裏暫且記錄下開發中遇到的幾個印象深刻的問題(開發環境,intellij idea13):


1.配置信息的持久化

《IntelliJ IDEA Plugin Development》中的配置信息持久化方法已經過期了,而且api方式有很大問題,比如用默認的的持久化類DefaultJDOMExternalizer配置信息的屬性的訪問權限只能爲public,因爲底層用的是反射方式。應該改爲如下的配置方式:

@State( name = "com.xlight.code.generator.component.DBSettingApplicationComponent",
        storages = {@Storage(file = "$APP_CONFIG$/cg.xml")})
//cg.xml默認地址 C:\Users\Administrator\.IntelliJIdea13\system\plugins-sandbox\config\options

public class DBSettingApplicationComponent implements ApplicationComponent,
        Configurable, PersistentStateComponent<DBSettingApplicationComponent> {
.....................其他代碼在此處省略..................

 @Nullable
    @Override
    public void loadState(DBSettingApplicationComponent state) {
        XmlSerializerUtil.copyBean(state, this);
    }
    @Override
    public DBSettingApplicationComponent getState() {
        return this;
    }

}

在路徑C:\Users\Administrator\.IntelliJIdea13\system\plugins-sandbox\config\options中可以找到持久化xml文件cg.xml


2.插件打包後插件資源文件讀取失敗問題

插件項目打包後生成了zip文件(zip內包含有class文件和資源文件的jar包),安裝後發現資源文件不能正常讀取,原因在於資源文件放在了jar文件裏面,經常有可能造成和沒有打包成jar的情況時不一樣的結果。解決方法可以參考http://www.iteye.com/topic/483115





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章