многомодульный проект sbt-assembly?

Мой проект разделен на несколько частей: * основной проект * проект utils (как пример)

Оба они имеют несколько модульных тестов, а «основной проект» опирается на код в проекте «utils» с помощью механизма «dependsOn» sbt.

Я использую плагин sbt-assembly для сборки "uber-jar"/"fat-jar" , но задача sbt assembly не запускает тест в проекте utils, чего я и пытаюсь добиться (я не вижу никаких тестов из «проекта utils» в журналах)

Изменение «dependsOn» на «aggregate» создает новую проблему:

агрегатная дедупликация сборки sbt

что-то похожее на этот issue-on-github


Итак, мой вопрос: как организовать многомодульный проект, который может быть собран sbt-assembly, и все тесты выполняются во время задачи сборки?


person Art    schedule 13.11.2017    source источник


Ответы (1)


Я предполагаю, что у вас должны быть как зависимости, так и совокупные отношения между вашими подпроектами. Они не исключают друг друга, просто служат разным целям.

DependsOn вводит зависимость кода, поэтому, если ядро ​​​​зависит от утилит, это означает, что вы можете ссылаться на типы из утилит в ядре.

Aggregate вводит зависимость от задачи. Это означает, что если вы выполняете компиляцию или тестирование на ядре, и оно объединяет утилиты, то задача будет выполняться в обоих подпроектах.

Проблемы с дедупликацией - еще один зверь - это означает, что в ресурсах или классах есть дубликаты при попытке создать один jar. Причины этого могут быть разными, и вы можете решить их, проверив зависимости библиотек в сборке или создав MergeStrategy — https://github.com/sbt/sbt-assembly#merge-strategy

person Marcin Bablok    schedule 13.11.2017