На сайте 1c-bitrix.ru неоднократно затрагивалась тема инструментов Битрикс-разработчика (http://dev.1c-bitrix.ru/search/?q=ide). И, естественно, «каждый кулик свое болото хвалит». Но каким образом эти инструменты вам помогают? В своей статье я хочу рассказать о среде разработки, в которой работает наша студия. Также мне придется рассказать об установке и настройке Eclipse, но это второстепенно. Главное — варианты ее применения. Написать статью меня побудила надежда, что вслед за мной другие разработчики поделятся своим опытом. Давайте будем учиться друг у друга.
Качаем сборку Classic. Сборка создана для разработок на java и поэтому содержит плагины, которые нам не особо-то и нужны, но, с другой стороны, в нее уже включены разные системные плагины, обеспечивающие целостность сборки. Я пытался собрать среду на основе голой платформы (http://download.eclipse.org/eclipse/downloads/ (Рис. 2)), дабы уменьшить объем, занимаемый Eclipse на диске. Сборка конечно работала, но местами выдавала ошибки. Мой вывод: овчинка выделки не стоит. Как вариант, можно скачать сборку для PHP-разработчиков Eclipse/PDT (http://www.eclipse.org/pdt/downloads/), но выпуск сборок Eclipse/PDT запаздывает за обновлением платформы Eclipse и плагина PDT. Выбираем ту платформу и архитектуру и платформу, которая требуется. От себя могу сказать, что никакой разницы в быстродействии windows 32 / windows 64 / linux 32 / linux 64 я не заметил. В linux-версии, когда выбирал кодировку проекта, в выпадающем списке отсутствовал пункт «Cp1251» — просто вбил его руками (Рис. 3).
Рисунок 3 — Выбор кодировки.
Распаковываем загруженный архив с Eclipse и пока ничего не запускаем. Для определенности допустим, что мы его распаковали в C:\eclipse. Убеждаемся, что у нас (у пользователя, под которым мы будем запускать Eclipse) есть права на запись в эту папку.
Java. Устанавливаем, если еще не установлена, Java (JRE) http://www.oracle.com/technetwork/jav...index.html (Рис. 4 и 5). Выбираем архитектуру в соответствии с загруженной Eclipse. В Linux мне вообще не пришлось устанавливать Java — в системе, на которой я тестировал Eclipse (LinuxMint), был предустановлен пакет OpenJDK (http://openjdk.java.net/). Поэтому Eclipse запустилась сразу.
Рисунок 4 — Страница выбора версии Java.
Рисунок 5 — Страница выбора архитектуры Java.
Допустим, мы выбрали Java 7 и установили ее в C:\Program Files\Java\jre7.Создаем в папке с установленной Eclipse новую папку jre. Теперь копируем содержимое папки в C:\Program Files\Java\jre7 (bin, lib, и т.д.) в папку C:\eclipse\jre. Eclipse будет использовать Java-машину из папки jre. А установленную Java можно деинсталлировать. Я на всякий случай дополнительно архивирую новую папку jre и помещаю архив рядом с загруженным архивом Eclipse.
Рисунок 7 — Рабочий стол Eclipse при первом запуске.
Если все хорошо (Eclipse запустилась и мы увидели ее рабочий стол (Рис. 7) и при этом не увидели никаких вопросов, никаких сообщений об ошибке), можно переходить к установке нужных для нас плагинов. Я дополнительно после первого запуска сразу закрываю Eclipse, чтоб убедиться в отсутствии ошибок. Если они есть, они будут записаны в лог C:\eclipse\workspace\.metadata\.log.
Установка плагинов для PHP. Выбираем в верхнем меню Help > Install New software… (Рис. 8) — откроется окно выбора плагинов для установки. Выберем источник в выпадающем списке Work with — «Juno - http://download.eclipse.org/releases/juno». В центральной области появится список плагинов. Убираем группировку (Group items by category) — плагины отсортруются в алфавитном порядке.
Рисунок 8 — Пункт меню установки плагинов.
Рисунок 9 — Дерево зависимостей плагинов.
Отмечаем и устанавливаем следующие плагины:
Dynamic Languages Toolkit - Core Frameworks — отвечает за автоподстановку.
Dynamic Languages Toolkit - Core H2 Index Frameworks — отвечает за автоподстановку.
Dynamic Languages Toolkit - Remote Development Support — отвечает за автоподстановку в проектах Remote System Explorer.
Eclipse Web Developer Tools — инструменты веб-разработчика (HTML, Javascript, CSS).
Eclipse XML Editors and Tools — XML.
Marketplace Client (необязательно, для работы не требуется) — да, у них тоже есть маркетплейс.
PHP Development Tools (PDT) Runtime Feature — непосредственно PHP-плагин.
Remote System Explorer End-User Runtime — представляет FTP-, SFTP-, SSH-соединения как локальный проект.
Смотрим дерево зависимостей (Рис. 9), принимаем лицензионное соглашение. Соглашаемся устанавливать плагины без цифровой подписи. После того как все плагины будут установлены перезапускаем Eclipse.
Часть 2. Настройка.
Я перечислю основные настройки, относящиеся к «философии» использования среды, опуская свистелки моменты, связанные с предпочтениями разработчика. Оформлю как последовательность шагов по настройке среды.
1. Окно редактора.
Закроем Welcome окно.
Откроем перспективу PHP — Windows > Open Perspective > Other… > PHP > OК (Рис. 10).
Откроем вид Remote Systems — Windows > Show View > Other… > Remote Systems > Remote Systems > OК (Рис. 11).
Рисунок 10 — Смена перспективы.
Рисунок 11 — Добавление вида.
Выстроим рабочую область. Рабочая область редактора состоит из нескольких блоков. Делим область на три колонки (Рис. 12):
Рисунок 12 — Рабочий стол после настройки.
левая — Remote Systems (RSE-соединения, ФС)
центральная — делится горизонтально на 2:
верхняя — редактор
нижняя — Console (вспомогательная консоль, SSH-терминал)
правая — Outline (объявления переменных, классов, методов, функций текущего файла)
Сохраним перспективу — Windows > Save Perspective As… > PHP > OК.
Делаем PHP перспективой по-умолчанию Window > Preferences > General > Perspectives > PHP > Make Default > OК.
2. Короткие теги.Снимаем галочку «Add “php” after PHP tag (<?)» Window > Preferences > PHP > Editor > Typing > Add “php” after PHP tag (<?) > OК. 3. Проект.
Снимаем галочку Project > Build Automatically. После этого в папке с workspace появится папка «мета-проекта» RSE — RemoteSystemsTempFiles. В этой папке будет храниться кеш соединений с FTP, SFTP и настройки проекта.
Открываем файл настроек проекта — C:\eclipse\workspace\RemoteSystemsTempFiles\.project. Там будет что-то похожее на:
Лезем в настройки плагина. Нас интересует работа с файлами: Wind ow > Preferences > Remote Systems > Files.
Ставим галочку «Show hidden files», чтоб видеть файлы начинающиеся с точки.
Убираем галочку «Share files between different connections to the same host», чтоб избежать конфликтов в случае, если у нас будет несколько RSE-соединений к одному хосту (Случай, когда на одном хосте несколько проектов и для каждого проекта мы создаем отдельное RSE-соединение).
5. Автоподстановка.
Делаем поведение автоподстановки нестрогой: В Window > Preferences > PHP > Editor > Content Assist ставим галочку «Show strict options» — это позволит выводить в списке автоподстановки методы, которые не объявлены как static, но вы пытаетесь вызвать и статически, иначе они будут видны только при динамическом вызове.
Копируем папку /bitrix/modules в папку RSE-проекта (C:\eclipse\workspace\RemoteSystemsTempFiles). Поступив таким образом, мы сделаем все классы Битрикс-модулей частью нашего «мета-проекта» и, после индексации плагином DLTK, они станут доступны в автоподсказке в RSE-соединениях (проектах, которые мы будем разрабатывать), так как все RSE-соединения так же будут созданы в этом «мета-проекте» (Рис. 13).
Рисунок 13 — Автоподстановка классов Битрикс.
Не лишним будет удаление из папок модулей всего лишнего. Смело удаляем admin, install и lang. Насчет остального смотрите сами, но это тот случай, когда лучше «недобдеть». Мы удаляем лишние папки, чтобы ускорить индексацию. По аналогии с modules в папку RemoteSystemsTempFiles можно кинуть php_interface, да что там php_interface — кинуть можно всё что угодно, и это «всё» будет проиндексировано DLTK и попадет в автоподсказку.
Структура workspace, которая у нас получилась / получится в результате (Рис. 14):
LOCALHOST — «Мой компьютер» в терминах RSE — соединение с локальной машиной
<Имя сервера X> — сервер, с которым настроены соединения
<Имя соединения 1> — RSE-соединение, разрабатываемый проект [LIST]
<файлы и папки проекта А>
<Имя соединения 2>
<файлы и папки проекта B>
<Имя сервера Y>
<Имя соединения 1>
<файлы и папки проекта C>
Сейчас именно тот момент, когда нужно создать резервную копию, чтобы при следующей установке не повторять эти шаги. Так как настройки Eclipse распределены между папкой configuration и workspace'ом, надо архивировать не только папку с Eclipse, но и папку с workspace’ом. В этом плане очень удобно, что мы создали workspace внутри папки Eclipse.
Часть 3. Как используем Eclipse.
1. Проект на FTP-сервере.
Допустим у нас есть сервер разработки, на котором развернуто несколько проектов. К ним организован доступ по FTP. Создадим в Eclipse RSE-соединение:
В левой колонке рабочей области у нас расположен вид Remote Systems. В контекстном меню выбираем New > Connection… (Рис. 15). Откроется окно настройки соединения.
Рисунок 15 — Создание нового соединения.
Выбираем тип подключения «FTP Only».
Вводим параметры соединения — IP или имя сервера «Host name» и название нового соедине-ния «Connection name».
Изменяем параметры FTP-соединения, если нужно («parser», «passive»).
Теперь в левой колонке появится новое RSE-соединение с иерархией папок и файлов. Когда мы дважды кликаем по файлу в иерархии RSE-соединения, сначала он скачивается в папку «мета-проекта», а потом уже оттуда открывается в редакторе. Когда мы сохраняем файл, изменения записываются в локальную копию файла и он копируется на сервер разработки. Это можно отследить по командам мелькающим в консоли. Если кто-то еще правил этот файл, мы получим сообщение об этом и сможем выбрать, что делать дальше — перезаписать чужие правки или нет. По каждому соединению можно создать фильтры для быстрого доступа к часто используемым или глубоко спрятанным папкам (Рис. 16).
Рисунок 16 — Фильтры быстрого доступа.
2. Виртуальная машина.
Создадим новое RSE-соединения, но тип подключения выберем «SSH». Вводим имя сервера, пролистываем настройки параметров. При подключении указываем логин bitrix и соответствующий ему пароль. Кроме, того у нас есть возможность управлять виртуальной машиной через SSH-терминал (Рис. 17) прямо в Eclipse. Минус в том, что не работают клавиши F1-F12, так что про mc придется забыть, но для чего-то простого сгодится.
Рисунок 17 — Запуск SSH-терминала.
3. Виртуальная машина с доступом через RSA-ключи.
Допустим, что у нас виртуальная машина развернута в Amazon S3. Для того, чтоб к ней подключиться нам нужен ее адрес и файл ключа. Я, как рядовой разработчик, не посвящен в таинства настройки виртуалок в S3 и генерации ключей, поэтому все, что мне нужно, я выбиваю из админов. Заходим на страницу управления ключами Window > Preferences > General > Network Connections > SSH2 > Вкладка Key Management. Жмем кнопку Load Existing Key…, выбираем файл кюча (Рис. 18). На вкладке мы увидим его содержимое. Жмем Save Private Key…, обзываем файл, сохраняем (Рис. 19).
Рисунок 18 — Вкладка управления ключами.
Рисунок 19 — Загруженный ключ.
Все ключи по-умолчанию сохраняются в одной папке — папка профиля\.ssh. Имя файла добавляется в список Private Keys на соседней вкладке вкладке Window > Preferences > General > Network Connections > SSH2 > Вкладка General (Рис. 20).
Рисунок 20 — Управление хранилищем ключей: папка и список файлов.
Добавляем новое RSE-соединение с виртуальной машиной через SSH Only. Перезапускаем Eclipse, иначе будет выскакивать ошибка при подключении (я забыл про этот пукт, когда писал статью, поэтому увидел вопрос Рис. 21, ответив положительно, получил ошибку при подключении и перезапустил Ecipse).
Рисунок 21 — Eclipse не опознала сервер, т.к. список хостов не обновился.
После запуска подключаемся к SFTP. Не знаю как вам, а мне достался ключ для root. Поэтому в качестве логина я указал root, поле пароль оставил незаполненным.
4. Облачные хранилища.
Я пробовал держать Eclipse в папке Dropbox'а. Сначала было очень удобно: на работе закрыл Eclipse, дома запустил — у тебя открыты те же файлы, что и на работе. Но с какого-то момента (мне кажется после выхода 4-й версии платформы) синхронизации стал противиться плагин DLTK. Возникает такая ситуация: открываешь Eclipse на работе — DLTK индексирует исходный код, открываешь дома — в DLTK происходит какой-то конфликт — он снова индексирует исход-ный код. Иногда ситуация доходит до анекдота (Рис. 22). Надеюсь со временем отыщется какое-то решение.
Рисунок 22 — Базы данных DLTK, сгенерированные в результате конфликта.
5. Несколько workspace’ов.
Данная фича используется редко. Но вы можете най ти ее полезной, если приходится разрываться между двумя задачами (для примера больше брать не будем), каждая из которых предполагает большое количество открытых файлов в редакторе.
Включаем выбор workspace’ов при запуске — Window > Preferences > General > Startup and Shutdown > Workspaces > Prompt for workspace on startup.
Экспортируем настройки Eclipse в файл, если не хотим настраивать Eclipse в новом workspace’е заново.
Идем в File > Export… .
Выбираем General > Preferences.
Жмем Next.
Отмечаем Export All.
Вводим имя файла.
Жмем Finish (Рис. 23).
Рисунок 23 — Выбор настроек для экспорта.
Переключаемся в новый workspace.
Идем в File > Switch Workspace > Other… .
Вводим имя нового workspace’а.
Ставим галочки, чтоб сберечь внешний вид (Рис. 24).
Рисунок 24 — Создание нового workspace'а.
Импортируем настройки File > Import… > General > Preferences > Next. Выбираем файл, который создали ранее (в папке с Eclipse).
Копируем modules и .project из прежнего workspace’а в новый.
При следующем запуске программа попросит выбрать workspace, как это было во время первого запуска — вводим имя созданного workspace’а. Теперь Eclipse его запомнит и в следующий раз его можно будет выбрать из выпадающего списка. Более того, он появится в меню File > Switch Workspace (Рис. 25). Теперь не нужно закрывать и открывать кучу файлов, когда вы переключаетесь с одной задачи на другую.
Рисунок 25 — Переключение между workspace'ами.
Часть 4. Итоги.
Выскажу свое имхо. Eclipse имеет свои плюсы и минусы. Eclipse очень критичен к объему оперативной памяти — стоит объему выделенной памяти превысить объем физической, Eclipse начинает тормозить. Аналогично Eclipse тормозит, когда я правлю относительно большие файлы (иногда > 2000 строк кода, иногда > 1500). Но это все на работе (2х2ГГц, 3ГБ ОЗУ), дома такого не наблюдалось (3х2.8ГГц, 8ГБ ОЗУ). Eclipse заменяет LiveAPI: стоит установить курсор на битриксовой функции и нажать F3 (Open Declaration) — в редакторе откроется файл, в котором она объявлена. Только не надо вставлять там var_dump() — ведь мы открыли файл из папки modules, которую мы кинули в папку мета-проекта (не повторяйте мои ошибки). Но если такое желание появится, вы уже будете знать, где этот находится в иерархии modules. Вообще, за время использования Eclipse я привык к ее поведению — автоматическая вставка скобок и кавычек, горячие клавиши, избранные папки (фильтры) по каждому соединению. Вот только к шаблонам так и не привык, хотя это удобно, когда пишешь «IBEG», а в редакторе появляется вызов IBlockElement::GetList() с предустановленными параметрами и цикл считываний GetNext().
Часть 5. Для тех, кто не осилил.
Качаем Eclipse Classic, распаковываем.
Кидаем java-машину в папку jre в папке с Eclipse.
Запускаем Eclipse, выбираем папку workspace.
Устанавливаем плагины:
PHP Development Tools.
Eclipse Web Developer Tools.
Eclipse XML Editors and Tools.
Remote System Explorer End-User Runtime.
Перезапускаем.
В настройках RSE отменяем шару файлов между соединениями к одному серверу и включаем показ скрытых файлов ().
В настройках PHP разрешаем нестрогое поведение автоподстановки и короткие теги.
Открываем вид Remote Systems, создаем подключение(я) FTP, SFTP/SSH.
Открываем какой-нибудь файлик, либо меняем какие-либо настройки проекта (напимер Build Automatically).
В файлике workspace\RemoteSystemsTempFiles\.project выставляем сущности проекта
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».