Среда сборки проекта
Contents
Среда сборки проекта#
Для сборки проекта требуется доступ к ряду репозиториев с дополнительными зависимостями (к примеру, общие библиотеки java). Есть несколько вариантов организации работы с репозиториями.
1. Сборка с использованием публичных репозиториев#
Все зависимости скачиваются из публичных репозиториев (например, Maven Central), расположенных непосредственно в интернете.
2. Сборка с использованием внутреннего прокси-репозитория#
Используется промежуточный репозиторий-прокси.
Все зависимости запрашиваются у прокси-репозитория.
Если зависимость не найдена — прокси делает запрос к внешним репозиториям, скачивает нужное и кэширует у себя.
Подробнее можно посмотреть в официальной документации sbt
3. Сборка в закрытой среде (изолированной)#
Среда полностью изолирована от интернета.
Используется локальный репозиторий.
Все зависимости предварительно вручную загружены во внутренний репозиторий.
Настройка сборки в закрытой среде.#
Шаг 1. Создать файл с конфигурацией репозитория#
Создайте файл ~/.sbt/repositories
:
mkdir -p ~/.sbt
nano ~/.sbt/repositories
Содержимое файла:
[repositories]
local
maven-proxy: https://repo.global-system.ru/artifactory/common/, allowInsecureProtocol
repositories
- секция, где указываются все доступные repositories
для sbt
.
local
- локальный репозиторий кэша. Используется для зависимостей, установленных вручную или собранных локально.
maven-proxy: https://repo.global-system.ru/artifactory/common/, allowInsecureProtocol
maven-proxy
— это имя репозитория (можно любое).https://repo.global-system.ru/artifactory/common/
— URL репозитория.allowInsecureProtocol
— флаг, позволяющий использовать небезопасный протокол HTTP вместо HTTPS (или с невалидным SSL-сертификатом). Начиная с версий 1.4+sbt
запрещает использовать HTTP. Этот флаг нужен если:используется локальный репозиторий по HTTP, без SSL;
используется самоподписанный **SSL-сертификат **, и
sbt
считает его небезопасным.
Подробнее можно посмотреть в официальной документации sbt
Примечание
Файл `.sbt/repositories` - это конфигурация самого sbt-ланчера (загрузчика). Он нужен sbt, чтобы понимать, откуда скачивать зависимости (библиотеки, плагины и т.д.), до того как проект начнёт собираться.
Для сборки самого приложения необходимые файлы берутся из репозиториев указанных в файле - `[project_name]/project/repositories/default.yaml`:
repositories:
- name: maven-common url: "https://repo.global-system.ru/artifactory/common"
- name: global-general url: "https://repo.global-system.ru/artifactory/general"
- name: app-global url: "https://repo.global-system.ru/artifactory/build-kit" isBase: true isLoginRequired: true
Можно включить изоляцию репозиториев
При добавлении опции -Dsbt.override.build.repos=true
в файле проекта application/.sbtopts
sbt будет обращаться только к репозиториям, указанным в .sbt/repositories
Шаг 2. Добавить файл с учётными данными (если нужен доступ по логину/паролю)#
Создайте файл:
mkdir -p ~/.ivy2
nano ~/.ivy2/.credentials
Содержимое:
realm=Artifactory Realm
host=repo.global-system.ru
user=build-user
password=very-secret-password
Добавьте в систему переменную окружения
export SBT_CREDENTIALS="$HOME/.ivy2/.credentials"
с корректным путем до файла .credentials
Шаг 3. Добавление сертификатов. В большинстве случаев в закрытой среде потребуется настроить Java-сертификаты#
Получите корневой сертификат
Выполните команду:
sudo keytool -import -trustcacerts \
-keystore $JAVA_HOME/lib/security/cacerts \
-storepass changeit \
-alias company-ca \
-file /путь/к/company-ca.crt
$JAVA_HOME
— путь к установленной JDK (например,/usr/lib/jvm/bellsoft-java21-amd64
)-alias
— уникальное имя сертификата в хранилище (например,company-ca
)-storepass changeit
— пароль по умолчанию дляcacerts
(если не меняли)-trustcacerts
— указывает, что вы добавляете доверенный CA-сертификат
Проверка добавления:
keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit | grep company-ca