2011-08-04 3 views
1

私は現在、少しのEclipseプラグインに取り組んでおり、古典的な'plugin.xml'ものを処理する必要があります。自然:eclipseプラグインの 'plugin.xml'のクラスフィールドを使用します。

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

は今、この特定の例では、私は、どこかで私のプラグインのコードでは、いくつかの日食機能へ文字列としてこの「ID」を与える必要があります。だから私のような特定のクラスを作成する必要があります。

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ファイルをロードできるという考え方です。上記のコンストラクトを解決するには、通常、このクラスのすべての参照(この場合はMyNature)を解決する必要があります。これは他の多くの依存プラグインの起動を容易にします。良くない。

デザインによっては、plugin.xmlのすべてのデータが自己完結型である必要があります。 (ローカライズされた文字列を除いて)。

+0

それは残念ですが、私はしばしば自分のidを同期させておくのを忘れていました。おそらく私はクラスのフィールドが構築されているときに 'plugin.xml'でいくつかのxsltの魔法を実行してIDを取得するような私の質問の逆を行うことができます。しかし、それは私にもっと汚れて見える。 – geoffroy

+0

IDの多くを選ぶにはIDが必要です。:-) –

関連する問題