Зависимости тестов SBT в мультипроектах: сделать тест-код доступным для зависимых проектов - PullRequest
70 голосов
/ 19 ноября 2011

У меня есть мультипроект 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' в папке test. Есть также такие вещи, как макеты и тестовые утилиты. Теперь я хотел бы использовать эти тестовые утилиты в тестах расширений. Для производственного кода это работает, так как я объявил зависимость. Однако кажется, что зависимость не имеет места для тестов. Когда я запускаю тесты, я получаю ошибку компиляции для отсутствующих классов. Эти классы взяты из тестового кода в базовом проекте.

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

Ответы [ 2 ]

79 голосов
/ 19 ноября 2011

Вроде так:

dependencies = Seq(coreProject % "compile->compile;test->test")

Это обсуждается в разделе «Зависимости пути к классам для каждой конфигурации» в руководстве Getting-Started-Multi-Project .

31 голосов
/ 17 января 2017

Вы также можете сделать это с .dependsOn(coreProject % "compile->compile;test->test") после первоначального объявления проекта.

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...