sbt изменяет настройки проекта в зависимости от

#scala #sbt

Вопрос:

Итак, у меня есть следующая структура проекта:

 val projectA = project. // assume rest of config  val projectB = project // assume rest of config .dependsOn(A)   

Теперь по причинам при запуске, например, тестов ProjectB вместо компиляции классов ProjectA в собственном dir ( projectA/target/scala... ) добавьте их в цель ProjectB, чтобы иметь projectB/target/projectA/target/... .

Я попробовал выполнить следующую настройку build.sbt и sbt 'projectB' ... безуспешно позвонил:

 val projectB = project // assume rest of config .dependsOn(A) .settings(projectA / target := file("new target dir"))  

но если та же конфигурация задана непосредственно в sbt команде, например:

 sbt 'project B' 'set projectA / target := file("new target dir")' ...  

Это работает нормально, и я вижу, как внутри создается новый каталог projectB/target/projectA со всем сгенерированным.

Не могу понять, чего мне здесь не хватает для настройки, чтобы build.sbt не работать, ценю любую помощь.

Комментарии:

1. Могу я спросить, почему вас волнует, где создаются файлы?

2. Конечно, я знаю, что это не обычно из-за стандартов, но в реальном сценарии между ними больше проектов и зависимостей. Дело в том, что я использую sbt-покрытие при запуске тестов, и они выполняются параллельно, опция покрытия делает проект и его зависимости перекомпилированными и параллельными конфликтами, потому что один делает недействительными классы другого. Поэтому моя идея состояла в том, чтобы только на этапе тестирования выполнить вышеуказанное

3. Похоже, даже если такое решение и существует, это плохая практика. Почему бы просто не убежать sbt compile , а потом sbt test ?