Работа в изолированной сети
В данном разделе описана организация разработки приложений на фреймворке Jmix в изолированной от интернет сети, то есть без доступа к публичным репозиториям артефактов и другим сервисам.
В качестве примера приводится настройка одного изолированного компьютера под управлением Linux. Для работы команды из нескольких человек достаточно будет перенести созданный репозиторий на общедоступный в изолированной сети сервер.
Загрузка программного обеспечения
Загрузите и перенесите на изолированный компьютер следующее ПО:
-
Sonatype Nexus OSS версии 3.x: https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3
-
JDK 8 (необходим для запуска Nexus) и JDK 11 или 17 (необходим для разработки приложений): https://bell-sw.com/pages/downloads
-
Утилиту Jmix Dependencies Tool: https://github.com/jmix-framework/jmix-dependencies-tool/releases
Jmix Dependencies Tool (
deptool
) - это утилита командной строки, позволяющая подготовить собственный репозиторий артефактов для разработки проектов на основе Jmix.Утилита
deptool
предоставляет следующие возможности:-
Вычисляет и загружает артефакты зависимостей, необходимые для запуска Jmix, в кэш Gradle.
-
Вычисляет и загружает артефакты, используемые любой отдельной библиотекой.
-
Экспортирует загруженные артефакты в формате репозитория Maven.
-
Импортирует артефакты в собственный Nexus.
Полная документация по утилите находится в файле README.
-
-
Gradle соответствующей версии: https://gradle.org/releases
Версия Jmix Версия Gradle 1.4.4
7.5.1
1.5.0
7.6
1.6.0
8.0.2
-
IntelliJ IDEA Community Edition: https://www.jetbrains.com/idea/download
-
Jmix Studio (плагин Jmix для IDE): https://plugins.jetbrains.com/plugin/14340-jmix/versions
Выберите наиболее свежую версию, соответствующую версии IDE. Например, если IDE версии 2022.3, то версия плагина оканчивается на
-223
Распакуйте все архивы, кроме плагина Jmix, в следующую файловую структуру:
~/work/
├── deptool-1.0.0-M1
├── gradle-7.5.1
├── idea-IC-223
├── jdk-11.0.18
├── jdk8u362
└── nexus
Архив зависимостей
На изолированный компьютер необходимо перенести архив с артефактами Jmix и его зависимостей (используемых библиотек).
Если вы планируете использовать только фреймворк и бесплатные дополнения, то можете загрузить заранее подготовленный архив зависимостей со страницы https://www.jmix.ru/resources/jmix-dependencies.
Если же вам нужны коммерческие дополнения и у вас есть Enterprise подписка, то необходимо подготовить архив зависимостей самостоятельно с помощью утилиты Jmix Dependencies Tool (deptool
). Выполните следующие шаги:
-
Установите на компьютер с доступом в интернет утилиту
deptool
, скачав архив со страницы https://github.com/jmix-framework/jmix-dependencies-tool/releases. -
Откройте терминал, перейдите в подкаталог
bin
утилиты и запустите команду:./deptool resolve-jmix \ --jmix-version 1.4.4 \ --jmix-plugin-version 1.4.3 \ --resolve-commercial-addons \ --jmix-license-key 123456123456-abcdefabcdef
где:
-
--jmix-version
- версия фреймворка -
--jmix-plugin-version
- версия плагина Gradle, если она отличается от версии фреймворка -
--resolve-commercial-addons
- флаг для загрузки всех коммерческих дополнений и их зависимостей -
--jmix-license-key
- ключ вашей Enterprise-подписки
После завершения работы команды в подкаталоге
gradle-home
утилиты будет сформирован локальный кэш артефактов в формате Gradle. -
-
Запустите команду экспорта артефактов:
./deptool export
В подкаталоге
export
утилиты будут собраны артефакты в переносимом формате репозитория Maven. Заархивируйте данный каталог для переноса в изолированную сеть.
Перенесите содержимое архива зависимостей (загруженного либо сформированного с помощью deptool
) на изолированный компьютер и распакуйте в каталог ~/work/dependencies
.
Настройка переменных окружения
Откройте в текстовом редакторе файл ~/.bashrc
и внесите в конец файла следующие строки:
export INSTALL4J_JAVA_HOME=/home/$USER/work/jdk8u362
export JAVA_HOME=/home/$USER/work/jdk-11.0.18
PATH=$PATH:$JAVA_HOME/bin:/home/$USER/work/gradle-7.5.1/bin
Переменная INSTALL4J_JAVA_HOME
, указывающая на каталог установки JDK 8, необходима для работы Nexus.
Переменная JAVA_HOME
, а также переменная PATH
, включающая каталоги запуска Java и Gradle, необходимы для запуска deptool
и разработки приложений.
Настройка локального Nexus
-
Откройте терминал и перейдите в подкаталог
~/work/nexus/nexus-<version>/bin
и выполните:./nexus run
-
Откройте в браузере страницу
http://localhost:8081
. -
Нажмите Sign in в правом верхнем углу.
-
Войдите пользователем
admin
с паролем, находящимся в файле~/work/nexus/sonatype-work/nexus3/admin.password
. -
Смените пароль на
adminpass
. -
На шаге Configure Anonymous Access разрешите анонимный доступ к репозиторию - это упростит конфигурацию проектов.
Создание репозитория Jmix
Далее необходимо сконфигурировать репозиторий для хранения артефактов зависимостей Jmix.
-
Перейдите в раздел администрирования и откройте меню Repositories.
-
Нажмите на кнопку Create repository.
-
Выберите тип
maven2 hosted
. -
Введите
jmix
в поле Name, выберитеMixed
в полн Version policy и нажмите на кнопку Create repository:
Будет создан новый пустой репозиторий артефактов, доступный по адресу http://localhost:8081/repository/jmix
.
Импорт зависимостей в Nexus
Импорт артефактов зависимостей в репозиторий Nexus осуществляется командой upload
утилиты deptool
:
Откройте терминал, перейдите в каталог ~/work/deptool-1.0.0-M1/bin
и запустите команду:
./deptool upload --nexus-url http://localhost:8081 \ (1)
--nexus-repository jmix \ (2)
--nexus-username admin \ (3)
--nexus-password adminpass \ (4)
--artifacts-dir ../../dependencies (5)
1 | Адрес менеджера репозиториев Nexus. |
2 | Название репозитория. |
3 | Логин администратора Nexus. |
4 | Пароль администратора Nexus. |
5 | Каталог с артефактами, которые будут загружены в Nexus. Укажите каталог с распакованным архивом зависимостей. |
В результате выполнения данной операции репозиторий jmix
локального Nexus будет заполнен необходимыми артефактами.
Настройка IDE
Откройте терминал, перейдите в каталог ~/work/idea-IC-223/bin
и запустите команду:
./idea.sh
В окне Welcome to IntelliJ IDEA перейдите на вкладку Plugins, нажмите на иконку шестеренки и выберите Install Plugin from Disk. Выберите ZIP-файл загруженного плагина Jmix. После установки плагина перезапустите IDE.
Для работы плагина Jmix требуется наличие файла sif.dat
в конфигурационном каталоге IDE. При работе онлайн он создается автоматически при активации Jmix Studio. В изолированной сети его необходимо перенести вручную в каталог ~/.config/JetBrains/IdeaIC2022.3
(соответствует версии вашей IntelliJ IDEA, см. подробнее в документации IntelliJ). Данный файл можно либо скопировать с компьютера с уже активированной Jmix Studio, либо получить по email, направив запрос по адресу info@jmix.io
.
Создание проекта Jmix
-
Запустите IntelliJ IDEA с установленным плагином Jmix.
-
Создайте новый Jmix проект с пользовательской конфигурацией репозиториев, в которой укажите адрес локального репозитория
http://localhost:8081/repository/jmix
:В поле Jmix version вы увидите список доступных версий Jmix, определяемый версиями имеющихся в репозитории артефактов
io.jmix.templates.studio:jmix-studio-templates
. -
После создания проекта вы увидите сообщение об ошибке синхронизации Gradle:
Unknown host 'services.gradle.org'.
Нажмите на иконку гаечного ключа в панели Gradle в правой части IDE и выберите пункт Gradle Settings. В появившемся окне настроек Gradle выберитеSpecified location
в поле Use Gradle from и введите путь к установленному на компьютере Gradle: -
После сохранения настроек Gradle начнется импорт проекта и завершится с ошибкой вида
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'io.jmix', version: '1.4.3'] was not found …
-
Откройте на редактирование файл
settings.gradle
и добавьте следующие строки в его начало:pluginManagement { resolutionStrategy { eachPlugin { if (requested.id.id == 'io.jmix') { useModule("io.jmix.gradle:jmix-gradle-plugin:${requested.version}") } } } repositories { maven { allowInsecureProtocol true (1) url 'http://localhost:8081/repository/jmix' (2) } } }
1 Инструкция allowInsecureProtocol true
требуется, если ваш репозиторий Nexus использует протокол HTTP.2 URL локального репозитория Nexus. -
Откройте также файл
build.gradle
и отредактируйте секциюrepositories
, добавив инструкциюallowInsecureProtocol true
и удаливmavenCentral()
:repositories { maven { allowInsecureProtocol true url 'http://localhost:8081/repository/jmix' } }
-
В панели Gradle нажмите Reload All Gradle Projects, чтобы снова запустить импорт проекта.
-
После успешной загрузки артефактов и индексирования проекта вы увидите панель Jmix со структурой проекта в левой части IDE.
Если панели Jmix нет или отображается окно Jmix Sign In, то проверьте что вы активировали Jmix Studio как описано в разделе Настройка IDE.