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

Олег Забродин добавил(а) 1 нед. назад
С ответом

После настройки по документации (п6.3.5) и прописывании в проекте адреса репозитория

http://localhost:8081/nexus/content/groups/cuba-group/ становится недоступной возможность выбора версии платформы. Где копать?

Комментарии (4)

фото
1

Здравствуйте,

Для начала следует отметить, что корректно работать с оффлайн-репозиториями будет только новая CUBA Studio версии 6.6.0 или выше.

Также стоит объяснить как работает локальный Nexus, настроенный по документации.

1) Вы создаете группу из а) "проксирующего" и б) "хостирующего" репозиториев.

2) В "хостирующем" репозитории Вы можете размещать свои артефакты.

3) Проксирующий репозиторий предоставляет "сквозь себя" доступ к https://repo.cuba-platform.com/content/groups/work

4) При первом обращении к артефакту через проксирующий репозиторий, артефакт скачивается из "целевого" репозитория (https://repo.cuba-platform.com/content/groups/work). Его копия сохраняется в локальном хранилище данных (BLOB store). После чего передается на сборку проекта.

5) Таким образом, артефакты к которым не было обращений через проксирующий локальный репозиторий не кешируются в BLOB store и не будут доступны после перевода репозитория в оффлайн.

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

CUBA Studio строит список доступных для репозитория версий платформы из файла maven-metadata.xml хранимого в репозитории.

Откройте в браузере http://localhost:8081/nexus/content/groups/cuba-group/com/haulmont/cuba/cuba-global/maven-metadata.xml

Если это файл отсутствует, скорее всего, он не успел закешироваться на вашем локальном Nexus до перевода в изолированную сеть и Вам следует еще поработать с Вашим репозиторием онлайн.

фото
1

Сделали всё по инструкции, пересобрали проект в онлайне, но папка c:\nexus-2.14.3-02\sonatype-work отсутствует. Что переносить в локалку - непонятно.

Есть папка C:\nexus-2.14.5-02\nexus\sonatype-work. Это?

Попробовал запустить в офлайне (версия платформы доступна теперь), сообщение:

What went wrong: A problem occurred configuring root project 'GtvTest'.

> Could not resolve all dependencies for configuration ':classpath'.

> Could not resolve com.haulmont.gradle:cuba-plugin:6.6.3. Required by: project :

> No cached version of com.haulmont.gradle:cuba-plugin:6.6.3 available for offline mode.

фото
1

Gradle кеширует артефакты локально (в папке ~/.gradle).

Если Вы успели поработать с публичным репозиторием и платформой 6.6.3, и после установили локальный Nexus, то для сборки проектов скорее всего использовались закешированные Gradle артефакты и обращения к репозиторию через Nexus не было.

Попробуйте удалить(переименовать) директорию ~/.gradle на онлайн-машине и снова пересобрать проект.

Можно положить необходимые артефакты в Nexus "вручную", но это кажется более сложным вариантом.

фото
1

Заработало.

Ещё вопрос - можно ли изолированный репозиторий расположить на сервере, а локальные рабочие станции с развёрнутых на них студиях могли бы обращаться к нему? Эта схема возможна?