可以簡單地把plugin放到eclipse SDK本身的features和plugins目錄下來進行plugin的安裝,但是這種方法並不利於plugin的管理:
雖然可以通過eclipse SDK的update功能來升級自身,然而因為速度的原因我們一般還是會選擇完全下載新版本,這樣就需要把後來安裝到eclipse SDK目錄下的plugin都挑選出來並拷貝到新版本的eclipse SDK目錄下,如果這樣的plugin比較多的話將會有些麻煩。 有時候會共存多個版本的eclipse SDK,顯然我們並不想把這些plugin拷貝到每個版本的eclipse SDK裡eclipse platform是支持把plugin安裝到其他目錄的,不過它對這些目錄是有要求的:該目錄必須有一個名為eclipse的子目錄,eclipse子目錄下必須有一個.eclipseextension文件,plugin本身放在eclipse子目錄下的features和plugins目錄下。這樣的一個位置就是一個eclipse extension,.eclipseextension文件描述了這個eclipse extension,包括三項name、id和version;可以有多個eclipse extension,具體創建幾個eclipse extension,每個eclipse extension包含哪些plugin,完全視情況而定,比如可以把關系比較密切的幾個plugin放在一個eclipse extension中。
顯然我們必須告訴eclipse platform這些eclipse extension的位置才行,這有兩種方法:
當eclipse啟動後用,打開Help->Software Updates/Manager Configuration,用Add an Extension Location來添加eclipse extesnion,指定的位置將會被存放到當前的configuration裡 在eclipse platform所在的eclipse目錄下建一個links目錄,在該目錄下放一些以.link結尾的文件,文件中指定eclipse extension的位置,每行一個,格式為path=location,路徑分隔符為正斜槓,如果用反斜槓必須用兩個以轉義
第一種方法是把eclipse extension的位置保存在當前configuration中,因此用這種方法指定的eclipse extension是特定於configuration的,不同的configuration可以具有不同的eclipse extension配置,可以在啟動時用-configuration選項來選擇一個configuration,但是似乎當添加完eclipse extension後是不能刪除的,只能disable,而且多個configuration也帶來了管理的負擔;第二種方法比較明了,但它是configuration insensitive的,不管以哪個configuration運行這些eclipse extension都是可見的,這裡不用擔心內存的占用問題,因為eclipse的plugin都是lazy loading的,用不到的plugin是並不會占用內存空間的,不過可能會有plugin沖突問題,比如兩個插件在同一個extension point處擴展,而對extension point的處理又是不可配置的,比如選擇extension的策略是找到的第一個extension,而此時如果我們希望運行的extension恰好排在第二位,那麼就有問題了,這時可能就需要兩種方法都用到了。
配置好eclipse extension後,這些eclipse extension中的plugin就和eclipse platform/sdk中的plugin,按照extension和extension point的關系,共同形成了一個插件網絡,這時各個plugin的位置已經沒有區別了,你甚至可以指定運行位於eclipse extension中的product。
一般的plugin包都會把eclipse目錄打進去,這樣只要把該包直接解壓到選定的eclipse extension目錄中即可,不過如前所述,要成為真正的eclipse extension目錄,還需要一個.eclipseextension文件,除了手工建立外,當從update site安裝plugin時還可以讓eclipse來建立它,只要在安裝對話框彈出時選擇change location指定一個目錄即可。