169 похожих чатов

Всем привет. Как научить sbt складывать создаваемые в процессе компиляции бинарники

не в структуру самого проекта (git-репа), а в отдельный каталог? (например /opt/sbt-cache/staging/...)
В SBT_OPTS указываю параметр -Dsbt.global.staging, но дело в том что этот параметр игнорируется до тех пор, пока есть доступ на запись в каталог с репой. Если я например подключаю git-репу только как read-only, тогда sbt использует эту опцию (sbt.global.staging).
При этом другие опции (для ivy, coursier, boot) используются правильно (вне зависимости от прав на запись)

Мне нужно сложить все собранные файлы чтобы сделать образ-артефакт, в котром я смогу запустить sbt test без необходимости перекомпиляции исходников.

19 ответов

9 просмотров

есть такй плагин sbt-out-of-tree но он для старого сбт (легко поправить под 1.х) и с кросспроектами не умеет

Вообще простейший способ - publishLocal и отдельный проект с тестами, который зависит от основного как от библиотеки.

Сергей-Голод Автор вопроса
Simon
Вообще простейший способ - publishLocal и отдельны...

и в таком случае при выполнении sbt test он не полезет в зависимости основного проекта и не начнёт повторную компиляцию основного проекта заново? Пока у меня проблема в том что я делаю sbt compile и sbt test:compile в одном месте (в одном контейнере), а sbt test и дальнейший sbt assembly мне нужно сделать в другом месте (в другом контейнере, которому будут "подложен" sbt-cache/ со всеми бинарными файлами созданными на этапе compile)

Сергей Голод
и в таком случае при выполнении sbt test он не пол...

В таком случае sbt вообще не знает, что основной проект и проект с тестами хоть как-то связаны

Сергей-Голод Автор вопроса
Simon
В таком случае sbt вообще не знает, что основной п...

но при этом компилируются оба проекта (основной и тест) сразу или тест будет компилироваться только при самом sbt test?

Сергей Голод
и в таком случае при выполнении sbt test он не пол...

Он "подкладывается" копированием или монтированием? Если копированием, то там атрибуты файлов (например даты) не меняются? Инкрементальная компиляция, насколько помню, не на основе хеша файла, а на основе даты последнего изменения.

Сергей-Голод Автор вопроса
Simon
Он "подкладывается" копированием или монтированием...

первоначально было через монтирование, откуда проблема и полезла. Т.е. git-репа была общая для первого этапа (compile) и для второго этапа (test+assembly). Я так и не понял до конца что именно "увидел" sbt тест в структуре репы (она была локально склонирована и содержимое в ней не менялось, за исключением созданных target/....), но в режиме sbt --debug --verbose было указано [debug] Recompiling all sources: number of invalidated sources > 50.0% of all sources и начинался процесс повторной сборки

Simon
Он "подкладывается" копированием или монтированием...

в последних сбт что-то делали с датами файлов вроде, чтоб получать каждый раз одинаковые бинари на выходе

Сергей-Голод Автор вопроса
den_po
в последних сбт что-то делали с датами файлов врод...

хотите "прикол"? cd project sbt compile (компиляция успешно проходит, повторный запуск sbt compile не перекомпилирует заново проект) cd .. cp -a project/ project2/ cd project2 sbt compile И оно заново ВСЁ перекомпилирует! Почему? Просто потому что имя каталога с проектом изменилось? (project -> project2). Возвращаюсь опять в project/, далее sbt compile - и опять не требуется перекомпиляция

Сергей-Голод Автор вопроса
Сергей Голод
хотите "прикол"? cd project sbt compile (компиляци...

даже переименование собственного каталога в котором расположен проект приводит к его перекомпиляции

Сергей Голод
даже переименование собственного каталога в которо...

Вполне вероятно: имя проекта берется из имени каталога и затем уже переопределяется в проекте (или не переопределяется при желании), так что имя каталога важно

Сергей-Голод Автор вопроса
Simon
Вполне вероятно: имя проекта берется из имени ката...

а как переопределить имя проекта таким образом, чтобы имя каталога с репой проекта могло иметь любое название и процесс компиляции не зависел от этого (от имени каталога)?

thisProject id все еще висит имя папки, так что не факт, что поможет.

Сергей-Голод Автор вопроса
Simon
thisProject id все еще висит имя папки, так что не...

а имя хоста может иметь аналогичную ососбенность? Я переношу папки с проектом на другой хост (отличие только в имени хоста, в остальном полная копия каталога и путей) - и опять идёт перекомпиляция

Сергей-Голод Автор вопроса
Сергей-Голод Автор вопроса
Simon
thisProject id все еще висит имя папки, так что не...

отзыв. после апгрейда до 1.4.0RC2 проблема с перекомпиляцией при изменении имени каталога репы ушла, а также проект больше не перекомпилируется при запуске в новом контейнере @odomontois

Сергей-Голод Автор вопроса
Tachi Войцишевский
Просто обновили?

только обновил. Новую фишку в возможности сложить все .class в jar и положить в отдельное место пока не проверил.

Похожие вопросы

Обсуждают сегодня

Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Друзья, за кем?
Magic
12
А шо, ты этой библиотекой пользуешься?
Darkanronpa Dark Hole
10
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
Или даже по-другому вопрос выстрою Есть ли вообще в electron'e для винды, возможность кнопки действий в нотификацию впихнуть ?
Андрей
7
приветы , подскажите что я не так сделал , почему у меня скрипт не работает в программе Revit ? ;Autohotkey_RU IfWinActive ("ahk_exe Revit.exe") ; только в открытом Revit Gu...
Anton Terentev
2
> комьюнити я бы не судил по этому чату. Как мы видели по статам просмотров нескольких телеговских постов, то в чате их набивается 30-40 или даже выше, когда как общаются акти...
Constantin F.
4
Карта сайта