Последнее время я не мыслю свою работу в Eclipse без Mylyn. С помощью Mylyn я свёл в единый список задачи из Jira, используемой по работе, Mantis, используемой в собственном проекте, Redmine, используемой ещё на одном проекте… Благо для всех этих систем есть готовые коннекторы. Но вот сегодня мне понадобилось подключить ещё и баг-трекер PEAR, для которого коннектора нет. К счастью, добрые люди предусмотрели в Mylyn такую штуку, как Generic Web Templates Connector, позволяющую, в теории, подключиться к любому баг-трекеру. Под катом я поделюсь опытом настройки этого коннектора для PEAR.
Порыскав по интернету, я нашёл вот эту статью. К сожалению, она слегка устарела, но общий путь она мне указала.
Generic Web Templates Connector не входит в поставку Mylyn по умолчанию. Установить этот коннектор можно с сайта обновлений: http://download.eclipse.org/tools/mylyn/update/incubator. Там этот коннектор называется "Mylyn Connector: Web Templates (Advanced)" (документация).
После установки коннектора идём в Task Repositories View и добавляем новое хранилище задач. В списке типов хранилища выбираем Web Templates (Advanced), жмём «Next» и переходим к настройке.
В начале указываем общие параметры хранилища:
Теперь начинается самое интересное. Разворачиваем секцию «Additional Settings». Здесь мы можем определить переменные, которые в дальнейшем будут нам доступны в виде подстановок в шаблонах. Я определил следующие переменные:
Все эти переменные будут доступны в шаблонах в виде "${имя_переменной}". Например адрес сервера будет подставляться вместо
Далее разворачиваем секцию «Advanced Configuration» и видим много страшных настроек.
С авторизацией я решил пока не морочиться, поэтому все поля «Login *» оставил незаполненными. Вместо этого, после настройки хранилища, я просто зашёл встроенным в Eclipse браузером на pear.php.net и авторизовался там, поставив галку «запомнить меня».
Жмём «Finish». Хранилище готово, теперь можно создать запрос.
Запросы, как можно догадаться, используются чтобы получать из хранилища задачи, удовлетворяющие каким-то условиям. Обычно, назначенные вам.
Кликаем правой кнопкой по хранилищу и выбираем "New Query...". Открывшийся диалог очень похож на предыдущий.
В поле "Query Title" указываем название запроса, например «Все запросы».
Остальные поля по умолчанию будут заполнены так же, как одноимённые им поля в диалоге добавления хранилища. Здесь, при желании, их можно изменить под нужды конкретного запроса. Например, я хочу создать запрос «Задачи, назначенные мне», показывающий только те задачи, где я стою исполнителем. Для этого я могу отредактировать поле "Query URL", добавив к нему
Сохраняем запрос. И, если всё правильно, то задачи из PEAR появляются в списке задач Mylyn:
Конечно, для таких задач недоступны все плюшки Mylyn, но основное присутствует: контекст, планирование, личные заметки. По-моему, вполне достаточно для работы.
Порыскав по интернету, я нашёл вот эту статью. К сожалению, она слегка устарела, но общий путь она мне указала.
Generic Web Templates Connector не входит в поставку Mylyn по умолчанию. Установить этот коннектор можно с сайта обновлений: http://download.eclipse.org/tools/mylyn/update/incubator. Там этот коннектор называется "Mylyn Connector: Web Templates (Advanced)" (документация).
Создание подключения к хранилищу
После установки коннектора идём в Task Repositories View и добавляем новое хранилище задач. В списке типов хранилища выбираем Web Templates (Advanced), жмём «Next» и переходим к настройке.
В начале указываем общие параметры хранилища:
- Server:
http://pear.php.net
- Label: название хранилища (на свой вкус)
- User ID: ваше имя пользователя на pear.php.net. Можно оставить галку «Anonymous» установленной и ничего здесь не указывать. Я указываю свой логин, только для того, чтобы его можно было использовать в запросах для фильтрации задач (об этом ниже).
- Password: пароль. Вообще говоря, он не нужен, но если здесь ничего не написать, Eclipse будет ругаться.
Теперь начинается самое интересное. Разворачиваем секцию «Additional Settings». Здесь мы можем определить переменные, которые в дальнейшем будут нам доступны в виде подстановок в шаблонах. Я определил следующие переменные:
- serverURL
http://pear.php.net
Chuck Burgess в своей статье рекомендует использовать https, но я не стал. - package_name — имя пакета, который вас интересует. Потребуется, если вы хотите иметь возможность создавать новые задачи из Eclipse.
- limit — сколько запросов выводить в результатах поиска. Кому как нравится. Можно вообще оставить пустым.
- id — честно сказать, я не очень понял, зачем Чак ввёл эту переменную, но пусть будет.
Все эти переменные будут доступны в шаблонах в виде "${имя_переменной}". Например адрес сервера будет подставляться вместо
${serverURL}
.Далее разворачиваем секцию «Advanced Configuration» и видим много страшных настроек.
- Task URL — адрес страницы просмотра задачи:
${serverUrl}/bugs/bug.php?id=${id}
- New Tasl URL — адрес для создания новой задачи (можно не заполнять, если не собираетесь создавать задачи):
${serverUrl}/bugs/report.php?package=${package_name}
- Query Request URL — адрес для запроса списка задач. Будет подставляться по умолчанию в ваши запросы. Можно будет изменить в каждом запросе индивидуально:
${serverUrl}/bugs/search.php?cmd=display&status=OpenFeedback&limit=${limit}&package_name%5b%5d=${package_name}
Вы можете подстроить этот адрес под свои нужды, например, убрать имя пакета или поменять статусы. - Query Pattern — шаблон, используя который Mylyn будет выдирать информацию о задачах со страницы результатов поиска. В шаблоне используются регулярные выражения и специальные подстановки Mylyn. Я наколдовал вот такую страшилу:
<tr class="bug-result Asn">[\s]*<td class="bug-id"><a href="/bugs/({Id}[0-9]+)">[0-9]+</a><br /><a href="[^"]*" class="edit">\(edit\)</a></td>[\s]*<td class="bug-date">....-..-..</td>[\s]*<td>({Type}[a-zA-Z]+)</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>[^<]*</td>[\s]*<td>({Description}.[^<]+)</td>[\s]*<td>({Owner}[a-zA-Z]+)</td>[\s]*</tr>
Будет подставляться по умолчанию в ваши запросы. Можно будет изменить в каждом запросе индивидуально.
С авторизацией я решил пока не морочиться, поэтому все поля «Login *» оставил незаполненными. Вместо этого, после настройки хранилища, я просто зашёл встроенным в Eclipse браузером на pear.php.net и авторизовался там, поставив галку «запомнить меня».
Жмём «Finish». Хранилище готово, теперь можно создать запрос.
Создание запроса к хранилищу
Запросы, как можно догадаться, используются чтобы получать из хранилища задачи, удовлетворяющие каким-то условиям. Обычно, назначенные вам.
Кликаем правой кнопкой по хранилищу и выбираем "New Query...". Открывшийся диалог очень похож на предыдущий.
В поле "Query Title" указываем название запроса, например «Все запросы».
Остальные поля по умолчанию будут заполнены так же, как одноимённые им поля в диалоге добавления хранилища. Здесь, при желании, их можно изменить под нужды конкретного запроса. Например, я хочу создать запрос «Задачи, назначенные мне», показывающий только те задачи, где я стою исполнителем. Для этого я могу отредактировать поле "Query URL", добавив к нему
&assign=${userId}
(полный URL будет таким: ${serverUrl}/bugs/search.php?cmd=display&status=OpenFeedback&limit=${limit}&package_name%5b%5d=${package_name}&assign=${userId}
).На заметку:
В этом диалоге есть две архиполезные кнопки "Open" и "Preview". Первая открывает выполняет все подстановки в Query URL и открывает получившийся адрес в браузере, вторая парсит страницу, по адресу Query URL при помощи регулярного выражения в Query Pattern и выдаёт найденные задачи в списке ниже.
Это сильно помогает в отладке шаблонов.
Сохраняем запрос. И, если всё правильно, то задачи из PEAR появляются в списке задач Mylyn:
Конечно, для таких задач недоступны все плюшки Mylyn, но основное присутствует: контекст, планирование, личные заметки. По-моему, вполне достаточно для работы.