Ответ 1
Так же:
dependencies = Seq(coreProject % "compile->compile;test->test")
Это обсуждается в разделе "Зависимости между классами конфигурации для конфигурации", а затем Руководство по началу работы-Multi-Project.
У меня есть многопроект SBT, где некоторые проекты имеют зависимости друг к другу. Вот так:
lazy val coreProject: Project = Project(
id = "core-project",
base = file("./core-project"),
// other stuff
))
lazy val extensions: Project = Project(
id = "extensions",
base = file("./extensions"),
dependencies = Seq(coreProject)
)
Теперь у меня есть тестовый код в проекте "core" в тестовой папке. Есть такие вещи, как mocks и test-utilities. Теперь я хотел бы использовать эти тестовые утилиты в тестах расширений. Для производственного кода это работает, так как я объявил зависимость. Однако, похоже, зависимость не выполняется для тестов. Когда я запускаю тесты, я получаю ошибку компиляции для отсутствующих классов. Эти классы взяты из тестового кода в основном проекте.
Как я могу сказать sbt, что зависимость также должна включать тестовый код для тестовой области? Чтобы я мог повторно использовать свои издевательства в тестовом коде проекта "exension"?
Так же:
dependencies = Seq(coreProject % "compile->compile;test->test")
Это обсуждается в разделе "Зависимости между классами конфигурации для конфигурации", а затем Руководство по началу работы-Multi-Project.
Вы также можете сделать это с помощью .dependsOn(coreProject % "compile->compile;test->test")
после первоначальной декларации проекта.
lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")