Используйте поле класса в «plugin.xml» для плагина eclipse.

В настоящее время я работаю над небольшим плагином eclipse, и мне приходится иметь дело с классическими вещами 'plugin.xml', такими как создание природы:

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

Теперь в этом конкретном примере я должен где-то в коде моего плагина указать этот 'id' как String для некоторой функции eclipse. Поэтому мне нужно создать определенный класс, например:

package aplugin.natures;

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

И а вот и моя проблема, я скопировал и вставил свой 'id'. Должен признаться, что я не очень этим горжусь.


Итак, мой вопрос: кто-нибудь знает, как использовать поле 'NATURE_ID' в классе 'MyNature' непосредственно в 'plugin. xml' файл ?.

В конце я хочу написать что-то вроде:

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

person geoffroy    schedule 04.08.2011    source источник


Ответы (1)


Это невозможно по дизайну.

Идея состоит в том, что ядро ​​Eclipse может загружать файлы plugin.xml для всех разрешенных подключаемых модулей/пакетов без загрузки/активации подключаемых модулей. Разрешение вашей конструкции выше обычно требует, чтобы Eclipse разрешал все ссылки для класса - MyNature в этом случае - что может легко привести к активации многих других зависимых плагинов. Нехорошо.

Таким образом, по замыслу все данные в plugin.xml должны быть автономными. (За возможным исключением локализованных строк).

person Tonny Madsen    schedule 04.08.2011
comment
Жаль, я часто забывал синхронизировать свой идентификатор. Возможно, я мог бы сделать обратное моему вопросу, например, получить идентификатор, выполнив некоторую магию xslt в «plugin.xml», когда поле класса построено. Но мне он кажется более грязным. - person geoffroy; 05.08.2011
comment
А для того, чтобы подобрать многие ID... нужен ID... :-) - person Tonny Madsen; 05.08.2011