Всем привет!

В этой статье поговорим об инструменте для моделирования архитектуры в нотации ArchiMate - Archi.

Про саму нотацию и Archi уже написано немало статей, в том числе на Хабре, но вот о плагинах Archi информации заметно меньше. Мне не удалось найти подробных и актуальных материалов, особенно если речь идет о самостоятельной сборке плагинов.

Решил разобраться сам и поделиться результатами небольшого исследования - как собрать плагин для Archi и на что стоит обратить внимание на примере нового плагина coArchi2. Бонусом небольшая детективная история по исходникам.

Дисклеймер про лицензии

Исходный код Archi и его плагинов распространяется по лицензии MIT.

Сам инструмент можно свободно скачать на официальном сайте. Но часть плагинов доступна в готовом к использованию виде только по платной подписке.

Автор Archi использует интересную конструкцию, которую называет HUMANS (Help Us Make Archi Noteworthy & Sustainable) licence. Про это есть в заметке про модель дистрибьюции плагина jArchi. Видимо, для новых плагинов, таких как coArchi2, выбрана аналогичная модель распространения.

Цитата:

The source code for jArchi is available at GitHub and is licenced under the MIT licence. This will always be the case, and you are, of course, free to use this. But we kindly ask that the binary distribution that we are providing is not shared and that jArchi users please contribute back to us.

Если кратко: исходники открыты, кто хочет - развлекайтесь. Кто хочет готовую бинарную сборку - есть платная подписка на Patreon, где за 5$ в месяц будут доступны новости проекта, доп. материалы и свежие сборки плагинов.

Важно: данная статья предоставляет только описание шагов исследования по сборке плагина из открытого исходного кода, который распространяется под MIT-лицензией. Этот материал не распространяет готовый (собранный) бинарник и не призывает к нарушению каких-либо лицензионных условий, включая “HUMANS licence”, заявленных автором программного обеспечения.

Настройка окружения

Archi написан на Java с использованием фреймворка Eclipse Rich Client Platform.

Для сборки потребуется IDE Eclipse. Я использовал последнюю версию 2025-09 R и билд Eclipse IDE for RCP and RAP Developers, но, не думаю, что будет проблемой использовать более старые версии и другие сборки IDE.

Начиная с версии 5.6 Archi использует Java 21, использовал OpenJDK 21.

Установку IDE и JDK буду считать стандартной историей, здесь без деталей.

Кроме этого пришлось поставить в IDE дополнительный плагин, но сначала - ремарка.

Про Target Definition File

Т.к. Archi - это Eclipse RCP приложение, а coArchi2 (и другие плагины) - Eclipse plugin, то при исследовании проекта и сборке сталкиваемся с *.targetфайлами. Последний раз полноценно писал код на Java около 10 лет назад, тем более не являюсь разработчиком Eclipse приложений, поэтому попросил chatgpt помочь:

.target — это Target Definition File, конфигурационный файл Eclipse (обычно something.target), который описывает целевую платформу для сборки и запуска RCP/OSGi-плагинов.

Он сообщает Eclipse PDE (Plug-in Development Environment):

  • какие версии фреймворков и библиотек нужно использовать при сборке;

  • откуда их брать (локальный каталог, p2-репозиторий, update-site, Maven и т.д.);

  • какая версия Eclipse SDK считается “целевой платформой”.

Потратил некоторое время на поиски, как с этим удобно работать - нашел плагин, который позволяет быстро и просто применять эти "target" настройки.

Это плагин из «семейства» Oomph: Oopmh Project Configuration.

Установить его (как и другие плагины) можно следующим образом:

  1. Меню Help -> Install New Software

  2. В открывшемся окне выбрать Work with - репозиторий плагинов. В моем случае это 2025-09 - https://download.eclipse.org/releases/2025-09 из предустановленного списка

  3. В строке поиска ввести target - плагин попадет в поисковую выдачу

  4. Отметить чекбоксом, установить

Как это выглядит
Установка плагина в Eclipse
Установка плагина в Eclipse

Для полноты картины можно почитать, что пишут авторы проекта в Developer Documentation, но на мой взгляд - там неполная картина, есть избыточные подробности для простых вещей, но не хватает существенных деталей для понимания полного процесса.

Сборка Archi

Для непосредственно сборки потребуется репозиторий Archi https://github.com/archimatetool/archi. Клонируем, импортируем в IDE workspace.

Далее сборка и тестовый запуск. Входная точка - модуль com.archimatetool.editor.product как пишут здесь. Как раз archi.target файл. Его можно открыть в GUI режиме (благодаря плагину), можно в текстовом.

Так выглядит текстом
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="Archi">
<locations>
    <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
        <repository location="https://download.eclipse.org/releases/2024-06"/>
        <unit id="org.eclipse.sdk.ide" version="4.32.0.I20240601-0610"/>
        <unit id="org.eclipse.emf.compare.feature.group" version="3.3.24.202401051648"/>
        <unit id="org.eclipse.jgit.feature.group" version="6.10.0.202406032230-r"/>
        <unit id="org.eclipse.jgit.ssh.apache.feature.group" version="6.10.0.202406032230-r"/>
    </location>
    <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
        <repository location="https://download.eclipse.org/eclipse/updates/4.32"/>
        <unit id="org.mockito.mockito-core" version="5.12.0"/>
    </location>
</locations>
</target>
Так выглядит в GUI

В GUI режиме можно прожать Set as Active Target Platform справа сверху - Eclipse все делает сам: скачает и настроит необходимые зависимости.

После установки зависимостей можно запустить через com.archimatetool.editor.product/archi.product. В GUI режиме это кнопка Launch an Eclipse application. При успешном запуске откроется стандартное окно Archi.

Запуск Archi
GUI режим для archi.product
GUI режим для archi.product

Сборка плагина

Повторяем клонирование и импорт, но уже для репозитория с плагином, например — coArchi2.

Это новый плагин в бета-тесте для совместного использования архитектурного репозитория. Про его использование, возможно, напишу отдельно.

Входная точка для плагина - модуль com.archimatetool.modelrepository. Файл plugin.xml также доступен в GUI режиме. Для экспорта есть кнопка Export deployable plug-ins and fragments. В окне настройки экспорта выбрать модули, относящиеся к плагину com.archimatetool.modelrepository.* (модули tests - не нужно), указать название файла с результатом.

Экспорт плагина
Экспорт плагина coArchi2
Экспорт плагина coArchi2
Настройки экспорта
Настройки экспорта

Небольшая детективная история

Собранный плагин Archi - это zip файл, в который попадают выбранные jar-ники.

Archi в качестве плагинов принимает файлы с расширением *.archiplugin, так что после экспорта остается переименовать файл соответствующим образом и пробовать установить.

Первая попытка добавить плагин через меню Helps -> Manage Plug-ins привела к любопытной ошибке, что файл Is not an Archi plug-in. Казалось бы, что может идти не так.

Is not an Archi plug-in

Решил поискать по тексту ошибки в исходниках. По результатам поиска обнаружился набор строковых константcom.archimatetool.editor/src/com/archimatetool/editor/p2/messages.properties, а они уже привели в обработчик com.archimatetool.editor/src/com/archimatetool/editor/p2/DropinsPluginHandler.java (Ссылка на Github)

Любопытные находки

Т.е. получается, что кроме сборки jar-ников, в zip архив нужно положить файл с magiс названием archi-plugin. В качестве double-check решил скачать доступный публично в бинарном виде плагин coArchi (первой версии).

Действительно, в сборке оказался этот самый файлик с содержимым Magic file to signify this is an Archi plug-in bundle. (как показали исходники и практика, текст не принципиален).

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

Вторая попытка установить плагин была более успешная, но не совсем - плагин установился, стали доступны соответствующие меню, но в Manage Plug-ins установленная версия не отображалась - ее нельзя удалить.

Еще несколько экспериментов привели к варианту, что внутри zip-архива не нужна вложенность. Дефолтная сборка из Eclipse складывала все jar-ники в подкаталог plugins.

Третья попытка - после перепаковки архива уже с учетом и magic файла, и отсутствия вложенности, финальная и успешная. Плагин установился, отображается в меню и доступен для использования.

Установленный плагин

Надеюсь, материал был полезен. Кто использует Archi — напишите в комментариях про ваши сценарии использования, опыт работы с плагинами, автоматизац��и, боли (да, их хватает) и т.д, будет интересно обсудить.