Менеджер проектов#
Для запуска используйте manage.cmd в Windows или ./manage.sh в Linux.
Используется для расширенного управления проектами в случае если не хватает ярлыков.
Выполняйте команды из каталога GSF CLI. В справке ниже показан manage.sh; в PowerShell используйте .\manage.cmd с
теми же аргументами. Общие параметры проекта ставятся перед командой:
./manage.sh -p main build --skip-publication
.\manage.cmd -p main build --skip-publication
-p выбирает конкретный проект, --all выполняет действие для всех зарегистрированных проектов. Без них нужен активный
проект. Если одновременно указаны -p и --all, используется --all; не смешивайте эти варианты.
Обычный build включает удалённую публикацию. Для локального результата используйте --skip-publication. Пошаговая
подготовка окружения находится в главах Linux и Windows.
Commands:#
usage: manage.sh [-h] [-p P] [--all] cmd ...
positional arguments:
cmd Команды
full_help Распечатать справку
version Показать версию gsf-cli
prepare_project Подготовить проект к работе
refresh_server Обновить сервер приложения
refresh_app_server Обновить только сервер приложения (без sbt-плагина)
refresh_sbt_plugin Обновить sbt-плагин
refresh_source Обновить исходный код
refresh_links Обновить ярлыки
refresh Обновить зависимости
init_project Инициализировать проект проекта
configure_idea Настроить idea
set_is_publish_release
Установить признак публикации релиза
publish_build_kit Публикация комплекта сборки
create_build_kit_release
Выпускает релиз комплекта сборки
git_branch_build_kit
Создаёт ветку для патча комплекта сборки
publish Опубликовать
publish_sbt_plugin Опубликовать sbt plugin
build Собрать проект
test Запустить юнит тесты
clean Очистить
update_module_dependency
Обновление зависимостей модулей
save_external_dependencies
Сохраняет набор всех внешних зависимостей решения в файл
diff_external_dependencies
Сравнивает набор внешних зависимостей из файла с текущими от проекта
upload_base_source_kit
Выгрузить baseSourceKit
load_base_source_kit
Загрузить baseSourceKit
options:
-h, --help show this help message and exit
-p P Имя проекта
--all Выполнить действие для всех проектов
Full_help#
usage: manage.sh full_help [-h]
options:
-h, --help show this help message and exit
Version#
usage: manage.sh version [-h]
Печатает версию gsf-cli
options:
-h, --help show this help message and exit
Prepare_project#
Сценарий подготовки рабочего места с IDEA: получает исходники и модули, формирует окружение, загружает сервер и плагин,
создаёт ярлыки и помогает настроить IDE. Может задавать вопросы. Для headless-сборки после load_config используйте
refresh и build, без этого мастера.
usage: manage.sh prepare_project [-h]
Подготавливает проект к работе, загружает сервер приложения, исходный кода, а так же конфигурирует idea
options:
-h, --help show this help message and exit
Refresh_server#
В текущей реализации вызывает то же обновление сервера, что и refresh_app_server. При необходимости запускает мастер
настройки источника. SBT-плагин отдельно обновляется командой refresh_sbt_plugin.
usage: manage.sh refresh_server [-h]
Обновляет сервер приложение
options:
-h, --help show this help message and exit
Refresh_app_server#
usage: manage.sh refresh_app_server [-h]
Обновляет только сервер приложения из настроенного источника. Без обновления sbt-плагина и исходного кода.
options:
-h, --help show this help message and exit
Refresh_sbt_plugin#
usage: manage.sh refresh_sbt_plugin [-h]
Обновляет sbt-плагин
options:
-h, --help show this help message and exit
Refresh_source#
Обновляет Git-репозиторий конфигурационного проекта и исходные модули. При первом запуске клонирует недостающие репозитории. Артефакты сервера и внешние SBT-зависимости этим действием не обновляются.
usage: manage.sh refresh_source [-h]
Обновляет исходный код проекта, при необходимости делает checkout проекта
options:
-h, --help show this help message and exit
Refresh_links#
usage: manage.sh refresh_links [-h]
Обновляет ярлыки
options:
-h, --help show this help message and exit
Refresh#
Для SBT-проекта обновляет конфигурационный Git-репозиторий и модули, скрипты окружения, сервер и SBT-плагин. Затем
выполняет update, updateClassifiers и publishDevDependencies. Если изменился сервер, может предварительно вызвать
sbt clean.
Это основной шаг после загрузки config.json. Он ещё не формирует готовые applib и appsrc — для этого выполните
build.
usage: manage.sh refresh [-h]
Обновляет зависимости
options:
-h, --help show this help message and exit
Init_project#
Для SBT выполняет подготовку dev-зависимостей и BSP через ярлыки проекта. Это не создание проекта из пустого каталога: проект должен быть зарегистрирован, а необходимые исходники, окружение и ярлыки — подготовлены.
usage: manage.sh init_project [-h]
Инициализация проекта, создание необходимых файлов перед запуском idea
options:
-h, --help show this help message and exit
Configure_idea#
usage: manage.sh configure_idea [-h]
Конфигурация idea.
При этом происходит:
Создание конфигурации для запуска сервера приложения;
Настройка для проектов системы контроля версий.
Смотри Intellij Idea: Settings > Version Control > Directory mappings
options:
-h, --help show this help message and exit
Set_is_publish_release#
usage: manage.sh set_is_publish_release [-h]
Вызывает мастера установки признака публикации релиза.
В случае если признак установлен публикация происходит по версии
заданной в конфигурации проекта.
options:
-h, --help show this help message and exit
Publish_build_kit#
usage: manage.sh publish_build_kit [-h] [-pt {release,snapshot}] [--publish-source-kit | --no-publish-source-kit]
Публикация комплекта сборки.
Версия берётся из конфигурации проекта.
options:
-h, --help show this help message and exit
-pt, --publish_type {release,snapshot}
Тип публикации комплекта сборки. Если не указан, то значение возьмётся из конфига.
--publish-source-kit, --no-publish-source-kit
Опубликовать исходники комплекта сборки
Create_build_kit_release#
usage: manage.sh create_build_kit_release [-h]
[-rt {generation,major,minor,build,patch}]
Выпускает релиз комплекта сборки.
Обрабатывается версии для корректного отображения в тегах
- Увеличивается выбранная версия и билд
- Происходит создание тега по текущей версии комплекта сборки
- Происходит commit и push изменений и тега
- Нельзя создать релиз от патча, если выбранная версия не является патчем
options:
-h, --help show this help message and exit
-rt {generation,major,minor,build,patch}, --release_type {generation,major,minor,build,patch}
Версия релиза комплекта сборки
Git_branch_build_kit#
usage: manage.sh git_branch_build_kit [-h]
Создаёт ветку для патча комплекта сборки.
При этом:
- Создаётся новая ветка, если её нет
- Локальная ревизия устанавливается в ветку с патчем
- Ошибка, если в project.yaml есть незакомиченные изменения
options:
-h, --help show this help message and exit
Publish#
usage: manage.sh publish [-h]
Опубликовать комплект сборки
options:
-h, --help show this help message and exit
Publish_sbt_plugin#
usage: manage.sh publish_sbt_plugin [-h]
Опубликовать sbt plugin из комплекта сборки
options:
-h, --help show this help message and exit
Build#
Для SBT обновляет исходники, модули, конфигурацию, сервер и плагин, выполняет update, компиляцию
прикладного и тестового кода и publishSolution. По умолчанию формируются applib и appsrc.
Компиляция тестов не означает их запуск.
usage: manage.sh build [-h] [--skip-publication | --no-skip-publication]
[--skip-appsrc] [--publish-path ROOT]
options:
-h, --help show this help message and exit
--skip-publication, --no-skip-publication
Не публиковать
--skip-appsrc Не собирать и не публиковать appsrc (SBT)
--publish-path, -P ROOT
Корневой каталог для applib и appsrc
publishSolution вызывает publishLibFolder и условную публикацию исходников внутри SBT-плагина.
Без --skip-appsrc CLI использует настройку SBT-плагина: isPublishSrcFolder по умолчанию равен
true, но явно заданное в конфигурации проекта false сохраняет силу. С --skip-appsrc CLI
задаёт Global / ru.bitec.app.gtk.sbt.Build.isPublishSrcFolder := false только для текущего запуска SBT.
Изменять project.yaml не требуется.
Без --publish-path результат находится в application/build/publish/applib и
application/build/publish/appsrc. С --publish-path <root> — в <root>/applib и <root>/appsrc.
Относительный путь считается от workspace/sources/<project_name>/application.
Для нескольких проектов запускайте отдельные команды с -p и уникальным корнем публикации.
В applib/metadata.yaml сохраняются источник GlobalServer, время и хост сборки.
Без --skip-publication после локальной сборки выполняется отдельный sbt publish в настроенный
Maven-репозиторий. Он получает тот же выбор исходников: --skip-appsrc отключает и их удалённую
публикацию. Отдельная команда publish сохраняет поведение конфигурации проекта.
--skip-publication отключает удалённую публикацию, но сохраняет локальные applib и appsrc.
Перед фактической SBT-сборкой CLI очищает applib и appsrc в выбранном корне публикации.
При ошибке локальной сборки частичный результат также удаляется. При пропуске release по кешу
или ошибке отправки в Maven локальный результат сохраняется.
GSF CLI не создаёт applib.zip и appsrc.zip: при необходимости упакуйте каталоги следующим шагом CI/CD.
Полнота каталогов не проверяется манифестом, дополнительный clean для appsrc не запускается.
Уже собранная release-версия пропускается по служебному кешу. Если она собрана с --skip-publication,
для последующей отправки в Maven выполните отдельную команду publish.
Для подробного вывода SBT-задачи используйте ярлык sbt.cmd или sbt.shиз workspace/links/<project_name>, например
sbt.cmd -debug "publishDevDependencies" в CMD. Полные примеры для
Linux и
Windows приведены в разделах диагностики.
Test#
Для SBT обновляет исходники, модули, окружение, сервер и плагин, затем выполняет update; compile; test.
Внимание
После успешных тестов текущая реализация вызывает publish. У команды test нет флага отключения публикации. Не используйте её как проверку окружения без побочных действий. Для release-версии, уже отмеченной в кеше как собранная, команда может завершиться без повторного запуска тестов.
usage: manage.sh test [-h]
Выполняет юнит тестирование
options:
-h, --help show this help message and exit
Clean#
Удаляет только workspace/cache/<project_name>/cache.json. Исходники, JAR-файлы и кеши SBT/Ivy/Coursier остаются на
месте. Вместе со служебным кешем теряется запись о ранее собранной release-версии.
usage: manage.sh clean [-h]
Очистить
options:
-h, --help show this help message and exit
Update_module_dependency#
usage: manage.sh update_module_dependency [-h] [--force]
Обновление зависимостей модулей.
Команда актуализирует версии модулей в `project.yaml` в соответствии с требованиями в `module-info.xml` для текущего модуля.
Проверка начинается с первого модуля в `project.yaml`.
При изменении версии какого либо модуля от которого зависит текущий модуль, происходит повторная проверка зависимостей измененного модуля.
При нахождении расхождений в модуле подключенному по исходному коду меняется `project.yaml`.
В случае если зависимость идет от комплекта сборки, выдается предупреждение.
options:
-h, --help show this help message and exit
--force Актуализирует 'project.yaml' не спрашивая пользователя
Save_external_dependencies#
Вызывает SBT-задачу сохранения реестра внешних библиотек. Если файл не задан, запрашивает путь. При существующем файле
спрашивает о перезаписи, в том числе при переданном --file. Для headless указывайте новый путь. Примеры для обеих ОС —
в главе о реестре библиотек.
usage: manage.sh save_external_dependencies [-h] [-f [FILE]]
options:
-h, --help show this help message and exit
-f [FILE], --file [FILE]
Файл, в который необходимо сохранить список
Diff_external_dependencies#
Сравнивает сохранённый файл с текущим реестром проекта. В headless передавайте существующий файл через --file, чтобы
не открывать диалог выбора пути.
usage: manage.sh diff_external_dependencies [-h] [-f [FILE]]
options:
-h, --help show this help message and exit
-f [FILE], --file [FILE]
Файл для сравнения, в котором хранится список внешних
зависимостей
Upload_base_source_kit#
usage: manage.sh upload_base_source_kit [-h]
Выгружает baseSourceKit:
Выгрузка конфигурации проекта в репозиторий, указанный в project.yaml `mirrorConfigSource`.
Выгрузка исходников модулей проекта в репозитории, указанные в project.yaml `module:mirrorSource`.
options:
-h, --help show this help message and exit
Load_base_source_kit#
usage: manage.sh load_base_source_kit [-h]
Загружает baseSourceKit:
Загрузка конфигурации проекта в application/build/sourceKit из project.yaml `baseSourceKit`.
Загрузка исходников модулей проекта через загруженную конфигурацию project.yaml `module:mirrorSource`.
options:
-h, --help show this help message and exit