плагин - функция - обновление сайта - PullRequest
3 голосов
/ 09 августа 2011

У меня есть несколько плагинов, и я хотел бы создать хороший сайт для их обновления. Некоторые из них содержат только базовую функциональность (ничего не будем делать, давайте назовем их core-plugin), а другие предоставляют некоторую функциональность конечному пользователю (они зависят от основных плагинов, давайте назовем их useme-plugin). Теперь я создал функции для каждого useme-плагина. Я включил соответствующий плагин и установил все зависимости (core-plugins). эти функции я добавил на сайт обновления. Когда я пытаюсь установить их сейчас, я получаю жалобы на отсутствие основных плагинов:

    Cannot complete the install because one or more required items could not be found.
  Software being installed: Useme-plugin 1.1.0.201108090928 (de.xxx.feature.feature.group 1.1.0.201108090928)
  Missing requirement: Useme-plugin 1.1.0.201108090928 (de.xxx.feature.feature.group 1.1.0.201108090928) requires 'de.xxx.coreplugin 1.1.0' but it could not be found

Я сделал что-то не так? Я не хочу включать основные плагины в каждую функцию useme ... Или я должен это сделать? Кто-нибудь может мне помочь правильно структурировать?

1 Ответ

3 голосов
/ 09 августа 2011

Функции предназначены для группировки связанных плагинов, которые должны быть установлены как один модуль в целевой системе.Таким образом, у вас обычно есть ряд функций для нетривиального приложения:

  • основная функция с базовыми функциями приложения
  • ряд функций для дополнительных функций надстройки
  • ряд функций с базовой функциональностью
  • ряд функций с основными коллекциями сторонних плагинов

Две или более функций могут включать в себя один и тот же плагин-in - плагин все еще будет существовать только в одном экземпляре в целевой системе.В особых случаях в целевой системе может даже существовать несколько разных версий одного и того же плагина.В других случаях, когда различные функции зависят от разных версий одного и того же подключаемого модуля, возникает конфликт, который должен быть разрешен разработчиком.

Функция также может включать или зависеть от других функций, и в этом случаезависимые функции должны быть также установлены в целевой системе.Таким образом, основная функция приложения зависит от необходимого ядра и сторонних функций, а также от сторонних функций.Установка зависимых функций обычно происходит автоматически с p2.p2 достаточно умен, чтобы загружать только необходимые плагины при установке или обновлении ...

Во время выполнения не имеет значения, каким образом конкретный плагин оказался в целевой системе, что дает числоопций в вашем случае.

При разделении плагинов на функции вы должны в первую очередь учитывать нужные приложения в целевой системе и нужные надстройки.Это становится действительно трудным, когда у вас есть несколько приложений или надстроек, каждое из которых использует подмножество основных плагинов или 3-х плагинов.

Вы не написали, есть ли у вас одно приложение илинесколько приложений, поэтому я предполагаю, что у вас есть одно приложение - довольно легко распространить идею на несколько приложений, которые используют общий набор плагинов.

Эту проблему можно решить несколькими различными способами.,Абсолютно самое простое решение - создать единую функцию приложения и включить в нее пользовательский интерфейс, ядро ​​и сторонние плагины - более или менее, как вы предлагаете.Это прекрасно работает, если у вас есть только один продукт и вы не планируете использовать базовые плагины в других настройках.

Часто вы разделяете свои функции на функции ядра и пользовательского интерфейса.Чаще всего потому, что функциональные возможности пользовательского интерфейса разделены на различные функции, чтобы позволить конечному пользователю устанавливать только необходимые функции.

Таким образом, в вашем случае у вас также могут быть две функции: основная функция и функция приложения,который затем зависит от базовой функции.

Или вы можете иметь

  • базовую функцию
  • функциональность пользовательского интерфейса - которая зависит от базовой функции
  • функция RCP (из Eclipse)
  • и функция основного приложения, которая зависит от всех других функций

Существует множество способов сделать это ...

...