В
одном из прошлых постов я рассматривал вопрос, как можно в Eclipse PDT редактировать файлы на удаленных серверах с помощью дополнения Remote Systems. Тогда я изучал различные варианты (создание удаленных проектов, монтирование удаленных каталогов в ОС) и пришел к выводу, что самым лучшим и простым способом является небольшая правка двух XML-файлов. Такая правка позволяет преобразовать проект Remote Systems в PHP-проект. И это решало все проблемы, при редактировании PHP-файлов через Remote Systems работали:
- Проверка синтаксиса;
- Автодополнение;
- Окно Outline и Tasks.
С тех пор вышла и новая версия PDT 2.1 и Eclipse Galileo. Кроме того, на
основном сайте Eclipse появилась редакция IDE специально для PHP-разработчиков. Эта редакция содержит не только PDT, но и другие дополнения, например, очень интересный модуль Mylyn, который позволяет при переключении между задачами не тратить время на закрытие файлов от старой задачи и открытие файлов новой. Это только одна из возможностей Mylyn. Еще этот дистрибутив содержит и расширение Remote Systems, правда без модуля работы по sftp, его нужно установить отдельно.
Мне стало интересно, стало ли проще редактирование удаленных файлов, и я решил проверить это, установив новые версии дистрибутивов:
- PDT All In Ones с сайта PDT;
- Eclipse for PHP Developers с сайта Eclipse.
Редактирование действительно стало лучше, практически все работает, но... независимо от выбранного дистрибутива
не работает автодополнение. Проблемы с автодополнением мне удалось решить тем же способом что и раньше: для удаленного редактирования файлов через Remote Systems используется специальный проект. Если этот проект преобразовать в PHP-проект, то проблем с автодополнением не должно быть.
Фактически нужно выполнить следующие действия:
- Необходимо закрыть Eclipse;
- В проводнике или в другом файловом менеджере, например Nautilus’е, открыть рабочий каталог Workspace, для меня это каталог «С:\Documents and Settings\hamuhin\workspace»;
- В каталоге Workspace должна быть папка «RemoteSystemsTempFiles», - это и есть проект, который нужно преобразовать;
- В папку RemoteSystemsTempFiles необходимо скопировать файлы «.buildpath» и «.project», они приложены к данному посту. Если файлы уже существуют в каталоге, то их нужно переименовать в бэкап, а новые файлы разместить на их место. Новые файлы уже содержат изменения, о которых я писал ранее;
- Это почти все, теперь можно снова запустить Eclipse.
Проверим, что автодополнение работает. Для этого откроем любой файл на удаленном сервере и попробуем ввести код $abc = str и нажать Ctrl+Пробел. Должен появиться список функций, как на рисунке ниже:

В процессе работы на диске может скопиться очень много файлов, которые когда то открывались на удаленных серверах. Со временем это может сильно замедлить работу Eclipse. Чтобы этого избежать, нужно ограничить количество временных файлов. Для этого необходимо открыть настройки Eclipse: «Window => Preferences».
В окне настроек следует найти раздел «Remote Systems / File Cache» и там включить опцию Limit cache size, как на рисунке ниже:

Оптимальное значение может зависеть от объема оперативной памяти на машине, я обычно устанавливаю 512 или 256 МБ.
Комфортной вам работы с одним из лучших IDE!
9 коммент.:
Есть мнение, что автодополнение работать не будет ни при каких условиях и в будущих версиях. Проектная структура Eclipse, автодополнение работает только в пределах проекта.
Мне показался более удобным подход другого расщирения: JCraft SFTP Plugin. При помощи этого расширения нельзя, к сожаланию, просто открыть файл с удалённого сервера, зато можно настроить синхронизацию с этим сервером.
Автодополнение (в контексте функций и классов проекта), переход к телу функции кликом по ёе имени и многие другие прелести действительно можно оценить только работая с проектами.
В принципе проект можно создать и на основе удалённой файловой системы (того же RSE), но что-то мне подсказывает, что при этом будет создана копия проекта на локальной машине :(
Для себя я решил эту проблему монтированием раздела песочницы с сервера разработки к себе на локальную машину по NFS (благо коннект позволяет). Скажу честно, работать стало намного приятней - как ни крути, с локальными проектами Eclipse работает намного адекватней.
P.S.
Недавно попробовал писать на Java под Eclipse... это фантастика - никакой IntelliSince от Microsoft и рядом не стоял! Какое там авто[дополнение|подстановка] и навигация - эта штука сама находит ошибки в коде и предлагает пути их исправления! :)
Ребята, привет! :)
На самом деле в Eclipse есть возможность через RSE создать Remote Project, при этом копии файлов не создаются, только строится карта файлов/ссылок.
После создания такого проекта, будет доступно автозаполнение по всем фукнциям, классам, переменным по всем проекте.
Не смотря на то, что этот функционал немного сырой, разработчики его улучшают.
Иногда по RSE я пишу в блоге: http://kidig.livejournal.com
Это плохо подходит для проектов с большим количеством исходных файлов. Все просто висит, при обновлениях.
Ну не так уж всё и плохо, Жень.
Как вариант можно в Remote Project включать только нужные директории.
А библиотеки типа Zend Framework и т.п. размещать локально и также подключать в проект.
Всё зависит от цели ;)
Конечно - все зависит от цели
Спасибо за статью! Как раз не мог решить сию проблему. Работаю по sftp и на серверах огромное количество файлов. Eclipse Helios Classic + PDT. Ещё раз спасибо!!!
загрузка архива недоступна
Андрей, вернул архив на свое место. Можно загружать.
Отправить комментарий