1. 程式人生 > >intellij idea的外掛開發小結

intellij idea的外掛開發小結

最近在做一個intellij idea的外掛,作用是讀取資料庫的表及欄位的資訊和預先定義的模板來生成程式碼檔案(實體,service,springmvc中的controller,freemark檔案等等)。

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