OSGi控制檯在Eclipse插件開發中的妙用

OSGi的實現本身有一個控制檯,提供插件的查看和管理功能。而Eclipse是基於OSGi的平臺應用,這樣我們可以使用這個控制檯輔助進行插件的管理,調試等工作…

一、管理和診斷

從事插件開發的各位同行也許都遇到過這樣的問題:某個插件在發佈以後無法啓動,在Eclipse的插件列表中也看不到。這種情況一般是插件打包的時候出錯,或者插件的依賴項不能滿足。 如果項目的插件本身就比較多,或者依賴項比較多,這種問題查起來就非常痛苦。(Eclipse的插件列表會自動忽略某些無法啓動的插件,無法通過Eclipse本身的插件列表排查問題)

而OSGi的控制檯,允許你通過命令行的方式,對插件進行安裝,卸載,啓動,更新等操作,通過這樣的方式進行排查。

例如,我們創建兩個插件,example.TestA和example.TestB,插件B依賴插件A。然後只把插件B放到Eclipse的dropins目錄下,這樣我們是看不到example.TestB這個插件的,也無法使用它提供的功能。

此時,我們在啓動eclipse的時候增加一個參數”- console”,就會同時啓動一個控制檯窗口,輸入ss命令,會看到所有的bundle的信息列表:

image

還可以在命令後面增加參數過濾:

image 

有的時候,這裏也看不到插件,還可以使用install命令安裝。

使用diag命令,可以對某個插件進行診斷:

image

二、在調試中應用

在插件開發過程中,我們調試插件,一般情況下,只要不是對類的結構進行改變,都可以在DEBUG模式下,進行代碼的熱替換,即debug模式修改代碼,無需重啓,即可看到最新的效果。 但是,一般情況下,對於plugin.xml等文件進行的修改,則必須重新啓動debug纔可以看到修改的效果。

而使用OSGi的update命令,就可以省去這個麻煩。

首先,在調試啓動的時候,需要增加-console參數:

image

這樣在啓動後,就可以在eclipse的控制檯輸入OSGi的命令了:

image w我們的插件B,在提供了一個菜單:

image 

這個菜單的Label是配置在plugin.xml裏的,我們修改一下這個值,然後在控制檯輸入下面的命令:

image 

也可以輸入update ,id就是你的插件bundle的id,這裏就是760。

可以看到無需重新啓動,菜單項已經改變:

image

 

關於控制檯支持的所有命令列表,以及其他命令的使用方式,可以在控制檯輸入help或者參考文章後面的參考資料。

參考資料

1. OSGi in a nutshell

2. Explore Eclipse's OSGi console

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