Продолжаем цикл статей по разработке плагина для 1С:EDT для начинающего Java+1C разработчика.
В первой части – //infostart.ru/1c/articles/1311121/ мы рассмотрели, что такое платформа Eclipse, и как создать плагин с помощью конструктора.
Во второй части – //infostart.ru/1c/articles/1319555/ создали плагин для валидации.
В третьей части – //infostart.ru/1c/articles/1323021/ – плагин для автоматического исправления (квикфикса)
Сейчас мы рассмотрим, как реализовать поставку обоих этих плагинов для пользователей.
С результатом разработки плагина можно ознакомиться в репозитории https://github.com/marmyshev/edt-bsl-validation
Содержание
- Создание фичи для поставки
- Создание репозитория для дальнейшей установки плагинов в 1C:EDT
- Система автосборки maven для компиляции из исходников, создания фичи и создания репозитория p2
Создание фичи для поставки
У нас есть два наших бандла, разделенных по бизнес-принципу. В одном используется UI, а в другом – бизнес-функциональность.
Теперь нам нужно поставлять их для пользователей.
Для этого обычно создается Feature Project (проект с фичей) – это функциональность, которую мы будем поставлять для пользователей, поскольку им не нужно знать, сколько у нас внутри бандлов, из каких кусков это все состоит.
Поэтому создаем проект с фичей (то, что мы будем поставлять пользователям), называем его org.mard.dt.bsl.validation.feature и в качестве версии устанавливаем 0.1.0.
На закладке Included Plug-ins включаем сюда созданные нами бандлы.
Создание репозитория для дальнейшей установки плагинов в 1C:EDT
Теперь, если мы хотим передать пользователям наш продукт, который мы создали, нам нужно сделать экспорт.
Мы говорим, что нам необходимо сделать Deployable features, потому что то, что устанавливается в платформу Eclipse и EDT – это фичи. Бандлы отдельно никак не устанавливаются. Всякая пользовательская установка дополнительных инструментов/плагинов делается через фичи.
Поэтому мы делаем экспорт наших фич. Нажимаем на кнопку Browse и указываем здесь какой-нибудь каталог для репозитория – я здесь создам каталог p2 специально для экспорта.
Переходим на вкладку Options и ставим галочку, что нам нужно создать p2 repository. Категории создавать не будем (снимаем галочку «Categorize repository)
Нажимаем кнопку Finish, и у нас происходит процесс экспорта этой фичи.
В дальнейшем из каталога p2 можно будет установить наши плагины в чистую поставку EDT.
Система автосборки maven для компиляции из исходников, создания фичи и создания репозитория p2
Maven также может компилировать проекты из исходников, создавать фичу и репозиторий p2.
В репозитории https://github.com/1C-Company/dt-example-plugins/tree/master/ видно, как организована структура проекта для работы с maven:
-
у нас есть исходники бандла – папка com.1c.dt.example.plugin.ui,
-
для него есть фича, которая делает поставку – папка com.1c.dt.example.plugin.feature.
-
есть папка с target-платформой;
-
и есть repository с дополнительной категоризацией.
В каждой папке здесь лежат pom-файлы для maven, которые нужны, чтобы описать, каким образом мы будем собирать все эти фичи, проекты, плагины и все остальное.
Настоятельно советую всем изучить эту схему.
В папке build находится центральный первый стартовый pom-файл для maven, который описывает, каким образом это надо собирать.
В нем указано, что дополнительно нужно взять подмодули (тут их четыре – target, плагин, фича и формирование репозиториев). И отдельно в каждом из этих проектов лежит свой соответствующий pom-файл – это такая иерархическая система сборки maven.
Вообще изучение автосборки – это большая тема. У maven есть специальный проект-расширение – maven tycho, который позволяет хорошо и качественно собирать проекты для Eclipse. С помощью maven tycho можно при сборке автоматически пробрасывать target-платформу, делать компиляцию, различные валидации – в этом его большое преимущество. Я читал, что для gradle тоже пытаются сделать такую же систему, но пока этого нет.
В целом, если вы хотите погрузиться в тему автосборки, советую изучить структуру репозитория dt-example-plugins. Я свои проекты собираю по такой же схеме.
Автосборка проекта с помощью Apache Maven выполняется из командной строки в папке, содержащей разрабатываемый плагин, по команде:
mvn clean verify -f build/pom.xml
В результате проект будет скомпилирован из исходников и собран репозиторий P2.
(* в настоящее время структура репозитория https://github.com/1C-Company/dt-example-plugins/tree/master изменилась, назначение его файлов и каталогов описано в https://edt.1c.ru/dev/ru/docs/plugins/project/project-structure/, порядок сборки проекта указан в https://edt.1c.ru/dev/ru/docs/plugins/project/build-install-publish-project/, при настройке maven необходимо учесть замечания из https://edt.1c.ru/dev/ru/docs/plugins/project/env-setup/).
****************
Статья подготовлена совместно с редакцией Инфостарта на основе серии обучающих видео по созданию плагинов для 1С:EDT.