суббота, 27 сентября 2008 г.

Управление расширениями Eclipse

Среда Eclipse IDE имеет собственные средства управления плагинами. Можно сказать, что она вся из себя состоит из них.

Вернее, она состоит из трёх частей:
• Инструментальные средства разработки на языке Java — Java Development Tool (JDT);
• Среда разработки модулей расширения — Plug-in Development Environment (PDE);
• Платформа — Eclipse Platform.

Это три основные функциональные возможности, каждая из которых группирует в себе те или иные модули расширения. Метафора функциональных возможностей описывает один или более взаимосвязанных модулей расширения или вложенных функциональных возможностей, что критически важно для распространения и обновления программных продуктов на основе Eclipse, разрабатываемых различными компаниями. В случае с Eclipse IDE эти три функциональные возможности объединены в одну Eclipse Project SDK (и неотключаемы из среды).

Чтобы настроить среду на производственный лад, и не включать в неё все возможные расширения какие только есть на свете (а в разработке Eclipse участвуют тысячи разработчиков и компаний по всему миру), нужно знать, чем конкретно ты занимаешься и, соответственно, подбирать соответствующий инструментарий под задачу. Репозитории проекта Eclipse очень обширны и на сегодняшний день включают сотни модулей расширений и десятки функциональных возможностей. В мастере Software Updates/Find and Install из среды можно получить доступ к любому онлайновому репозиторию расширений Eclipse по всему миру. То есть можно, не выходя из среды, скачать необходимые расширения и таким образом настроить среду под себя как нужно. Другой путь: скачать готовый дистрибутив одним пакетом с главного сайта www.eclipse.org для решения какой-то одной задачи.


Недостатки «готового» дистрибутива

Всё есть и всё тормозит. Много ненужных расширений, которые никогда не понадобятся в работе, а ресурсы на себя отнимают. Обновлять такую махину весьма накладно да и не нужно.


Недостатки «онлайновой» среды

Каждый раз при поиске новых и обновлении установленных плагинов среда скачивает из интернета порядка 20МБ «оверхеда» в худшем случае. На небольших скоростях интернета невозможно по-нормальному собрать среду Eclipse из плагинов, ориентируясь исключительно на способности Eclipse (хотя с каждой новой версией среды оверхед всё меньше и меньше). Из-за ошибок обновления (бывает: что-то не срослось) приходится расширение качать заново или полностью переустанавливать среду — в последнем случае всё, что скачал непосильным трудом, всё утрачивается. Да и со временем подкаталоги plugins и features Eclipse превращаются в форменную "помойку", которая тормозит среду и делает её весьма неустойчивой в работе из-за наложенных старых и новых расширений. Кроме того, в этом случае затрудняется межплатформенная переносимость модулей расширения — не так просто выбрать и перенести автоматически скачанные модули расширений на другой компьютер в другую систему.


Выход есть

Разработчики модулей расширений распространяют их в архивах, чаще всего в ZIP, допускающие интеграцию в среду. Eclipse, в свою очередь, позволяет ручную установку функциональных возможностей во внешние (по отношению к среде) каталоги, не захламляя подкаталоги самой среды — plugins и features.


Что это значит?

Модули расширения распространяются в виде архивов ZIP и не включают в себя файлы с определением функциональных возможностей. Но, как правило, такой архив и есть та самая функциональная возможность, которую необходимо интегрировать в среду. Нам же предлагается скачать архив (архивы — не забыв о возможных зависимых расширениях) по ссылке в браузере, либо по полученному по почте URL сохранить его(их) в надёжном месте.


Что делать?

Всё просто. Обычно структура каталогов архива с модулями расширения повторяет структуру каталогов среды, то есть там есть подкаталоги plugins и features. Ни в коем случае эти каталоги нельзя копировать в каталог среды Eclipse — среда их никогда не найдёт!

Делаем следующее: создаём отдельный каталог и разархивируем в него содержимое архива. Далее, в основном каталоге среды Eclipse отыскиваем файл ".eclipseproduct" и копируем его под именем ".eclipseextension" в подкаталог распакованного архива, чтобы этот файл был в одном каталоге с каталогами plugins и features новых модулей расширения. Осталось подключить получившуюся функциональную возможность к среде Eclipse.

Открываем менеджер конфигурации из меню среды: Help -> Software Updates -> Manage Configuration, и из всплывающего меню над пунктом "Eclipse SDK" выбираем: Add -> Extension Location, далее указываем каталог с файлом .eclipseextension. Среда подхватывает новые модули расширения и после рестарта в менеджере конфигурации нужно убедиться, активированы ли они. А в диалоге About среды, нажав на соответствующие кнопки, посмотреть на установленные плагины и features.


Если не работает

Бывает, что новейшие версии модулей расширения всё-таки несовместимы с используемой версией среды Eclipse, и из-за этого они не включаются — в этом случае нужно просто закрыть Eclipse, удалить каталог с этими модулями расширения (это не повредит самой среде). Далее точнее выбрать версию расширения и скачать нужный архив. Затем проделать описанную выше операцию снова.

Иногда устанавливаемые расширения зависят от других расширений. И при отсутствии последних не включаются:



Решение этой проблемы тоже простое: надо сначала установить и проверить, включены ли все необходимые "базовые" расширения, а потом включить всё остальное.


Что в итоге

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

6 комментариев:

Игорь комментирует...

автор, а можно подобновить статейку для текущей версии Eclipse (3.4.2), так, чтобы мухи отдельно, котлеты отдельно можно было провернуть? ;)

iZEN комментирует...

Загрузка плагинов в Eclipse 3.4 осуществляется в скрытый домашний каталог пользователя, настраивающего среду по-своему.

Можно включить режим совместимости среды и плагинов с версией 3.3, тогда можно будет указывать конкретные каталоги установки плагинов.

Анонимный комментирует...

А разве в версии 3.4 нельзя указать путь для сохранения плагинов с сайта другую папку? В этом случае по указанному адресу создается папка "eclipse" со всем содержимым и файлом расширения. И этот адрес добавляется в список путей для плагинов.

iZEN комментирует...

Игорь, а смысл?

Iego комментирует...

Смысл в том, что можно плагины скачивать во внешние папки и внутренности не захламляются, чего собственно, как я понял, и хотелось изначально. Просто не нужно париться с путями. Если есть сайт плагина, то можно выкачать его в отдельную папку сразу. И там будет сразу файл расширения.
Вопрос, можно ли похожим способом добавить плагины, которые не содержат папку features, а только plugins. Например, скачанный с родного сайта UMLet таким макаром добавить не получилось - менеджер просто не видит его, хотя файл расширения закинул внутрь.
Да и еще. Как например быть с аптаной? Которая в принципе не может быть загружена отдельно, а только через апдейтер.
Я eclipse только недавно использую. Если чего не знаю - не бейте больно :)

DDS комментирует...

Хотелось бы узнать, как обстоят дела в свежей версии (3.5) eclipse с установкой плагинов в отдельные папки.