Работа в изолированной сети

В этом разделе рассказывается, как установить локальный репозиторий, чтобы использовать его для хранения всех необходимых артефактов - версий Jmix, аддонов и дополнительных библиотек - вместо публичного репозитория Jmix. Это рекомендуется делать в следующих случаях:

  • У вас нестабильное или слабое интернет-соединение. Несмотря на то что Gradle кэширует артефакты на компьютере разработчика, время от времени все-таки необходимо подключаться к репозиторию артефактов, например, при первом запуске проекта или при переключении на новую версию фреймворка.

  • У вас ограничен доступ к интернету из-за политики безопасности организации.

Установка локального Nexus

Рассмотрим пример установки менеджера репозиториев Sonatype Nexus OSS.

  • Скачайте на компьютер Sonatype Nexus OSS версии 3.x по ссылке https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3.

  • Распакуйте архив.

  • Перейдите в подкаталог bin и запустите менеджер репозиториев командой run:

    On Windows
    nexus.exe /run
    On Linux
    ./nexus run
  • Откройте в браузере адрес http://localhost:8081.

  • После первого запуска смените пароль по умолчанию:

    nexus login

Создание репозитория Jmix

Далее сконфигурируем репозиторий, который будет использоваться для установки артефактов.

  • Перейдите в меню администратора и далее нажмите на кнопку Repositories.

    nexus repository
  • Нажмите на кнопку Create repository.

  • Выберите тип maven2 hosted.

  • Заполните поле Name и нажмите на кнопку Create repository:

    nexus repository create

Установка и настройка CUBA SDK

CUBA SDK - это утилита командной строки, позволяющая вычислить, скачать и загрузить в локальный репозиторий все артефакты, необходимые для разработки Jmix-приложений.

  • Скачайте последний доступный релиз CUBA SDK для вашей операционной системы по ссылке https://github.com/cuba-platform/cuba-sdk/releases.

  • Произведите установку CUBA SDK согласно инструкции, доступной по ссылке https://github.com/cuba-platform/cuba-sdk#installation.

  • После первичной установки добавьте сконфигурированный на предыдущем шаге репозиторий в качестве target в CUBA SDK с помощью команды:

    cuba-sdk repository add target
  • Проследуйте дальнейшим инструкциям. Пример такого диалога ниже:

    cuba sdk

Загрузка архива артефактов

CUBA SDK может вычислить необходимые версии всех зависимостей, необходимых для Jmix и скачать их локально на ваш компьютер. Для этого используются команды resolve jmix, push jmix или install jmix (см. руководство). Но обычно нет необходимости вызывать эти команды самостоятельно. На сайте Jmix вы можете найти заранее подготовленные архивы с артефактами для всех версий Jmix.

Скачайте ZIP-архив c необходимой версией Jmix с сайта https://www.jmix.ru/sdk-resources/. Архив содержит все бесплатные Jmix-аддоны и прочие зависимости, необходимые для работы с проектом Jmix.

В примере ниже будем использовать версию Jmix 1.2.2.

Импорт артефактов

После того, как target репозиторий добавлен, импорт может быть осуществлён командой

cuba-sdk import <path-to-zip-archive>

Например:

cuba-sdk import jmix-dependencies-1.2.2.zip

В результате выполнения данной операции target репозиторий jmix локального Nexus будет заполнен необходимыми артефактами.

Загрузка премиум аддонов

Aрхив на сайте не содержит премиум аддонов. Для их установки в Nexus репозиторий необходимо выполнить ряд дополнительных операций.

  • Введите лицензионный ключ через команду в оболочке CUBA SDK:

    cuba-sdk set-license
  • Далее установите дополнение в локальный репозиторий. Рассмотрим на примере установки дополнения Maps:

    cuba-sdk install jmix-addon
    cuba sdk install addon

Команда install jmix-addon вычисляет все необходимые зависимости для конкретного аддона, скачивает их в рабочую папку утилиты CUBA SDK и затем загружает их в target Nexus репозиторий (в нашем примере это репозиторий с именем jmix).

Экспорт артефактов

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

cuba-sdk export jmix-addon
cuba sdk export addon

Результатом выполнения данной операции должен стать ZIP-архив со всеми зависимостями.

Подробнее о экспорте можно посмотреть в инструкции, доступной по ссылке.

Вместо создания собственного zip-архива вы также можете перенести сконфигурированный Nexus на компьютер без доступа в интернет.

Установка Gradle

  • Скачайте Gradle версии 7.x с сайта https://gradle.org/releases/.

  • Распакуйте в рабочий каталог, например, C:\tools.

  • Добавьте подкаталог bin установленного Gradle в переменную PATH операционной системы.

Создание проекта Jmix

  • Запустите IntelliJ IDEA с установленным плагином Jmix.

  • Создайте новый Jmix проект с кастомной конфигурацией репозиториев, в которой укажите путь и параметры подключения к локальному репозиторию:

    new project custom conf

    Список доступных версий Jmix определяется версиями имеющихся в репозитории артефактов io.jmix.templates.studio:jmix-studio-templates.

  • После открытия проекта отредактируйте build.gradle следующим образом (замените пароль администратора на тот который вы задали в Nexus):

    buildscript{
        repositories {
            maven {
                url 'http://localhost:8081/repository/jmix/' // local repository URL
                allowInsecureProtocol = true // required if HTTP used instead of HTTPS
                credentials {
                    username(rootProject.hasProperty('repoUser') ? rootProject['repoUser'] : 'admin')
                    password(rootProject.hasProperty('repoPass') ? rootProject['repoPass'] : 'adminpass')
                }
            }
        }
    
        dependencies {
            classpath 'io.jmix.gradle:jmix-gradle-plugin:1.2.0' // 'jmix' plugin version
        }
    }
    
    apply plugin: 'io.jmix'
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    
    jmix {
        bomVersion = '1.2.2'
    }
    
    group = 'com.company'
    version = '0.0.1-SNAPSHOT'
    
    repositories {
        maven {
            url 'http://localhost:8081/repository/jmix/' // local repository URL
            allowInsecureProtocol = true // required if HTTP used instead of HTTPS
            credentials {
                username(rootProject.hasProperty('repoUser') ? rootProject['repoUser'] : 'admin')
                password(rootProject.hasProperty('repoPass') ? rootProject['repoPass'] : 'adminpass')
            }
        }
    }
    
    dependencies {
    // ...
    }
  • Укажите корректный путь к Gradle в Gradle Settings:

    gradle settings
  • В панели Gradle нажмите Reload All Gradle Projects, чтобы обновить конфигурацию проекта.

    В случае возникновения ошибок нужно зайти в терминал и выполнить:

    gradle --no-daemon clean assemble