2011-08-04 18 views
1

我目前正在研究一個小的eclipse插件,我必須處理經典的'plugin.xml'東西,比如創建一個性質:在'plugin.xml'中爲一個eclipse插件使用一個類字段

<extension 
    id="aplugin.natures.MyNature.NATURE_ID.id" 
    name="Sample Project Nature" 
    point="org.eclipse.core.resources.natures"> 

現在,在這個特殊的例子,我必須在我的插件代碼的某個地方,給這個「身份證」作爲字符串一些蝕功能。所以,我需要創建一個特定的類,如:

package aplugin.natures; 

public class MyNature implements IProjectNature { 
    public static final String NATURE_ID = "aplugin.natures.MyNature.NATURE_ID.id"; //$NON-NLS-1$ 
} 

而且這纔是我的問題,我得到了我「ID」的一些複製和粘貼。我必須承認,我並不爲此感到自豪。


所以我的問題是,有人知道的方式直接在「的plugin.xml」文件中使用的「MyNature」「NATURE_ID」場?

最後,我希望寫類似:

<extension id="${aplugin.natures.MyNature.NATURE_ID}" ... > 

回答

3

這設計是不可能的。

這個想法是,Eclipse核心可以加載所有解析的插件/軟件包的plugin.xml文件,而無需加載/激活插件。解決上面的構造通常需要Eclipse解決該類的所有引用 - 在這種情況下爲MyNature - 這很容易導致激活其他許多依賴插件。不好。

因此 - 按設計 - plugin.xml中的所有數據必須是自包含的。 (可能的例外是本地化字符串)。

+0

這是一個恥辱,我經常忘記保持我的身份證同步。也許我可以做我的問題的反面,比如在類的字段被構建時通過在'plugin.xml'上執行一些xslt魔術來獲取id。但它對我來說看起來更骯髒。 – geoffroy

+0

爲了挑選出許多ID ......你需要一個ID ...... :-) –

相關問題