일부 프로젝트가 서로 종속성이있는 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)
)
이제 테스트 폴더의 ‘핵심’프로젝트에 테스트 코드가 있습니다. 모의 및 테스트 유틸리티와 같은 것도 있습니다. 이제 확장 테스트에서 이러한 테스트 유틸리티를 사용하고 싶습니다. 프로덕션 코드의 경우 종속성을 선언했기 때문에 작동합니다. 그러나 종속성이 테스트에 적용되지 않는 것 같습니다. 테스트를 실행할 때 누락 된 클래스에 대한 컴파일 오류가 발생합니다. 이러한 클래스는 핵심 프로젝트의 테스트 코드에서 가져온 것입니다.
종속성이 테스트 범위에 대한 테스트 코드도 포함해야한다고 sbt에 어떻게 알릴 수 있습니까? 그래서 ‘확장’프로젝트의 테스트 코드에서 모의를 재사용 할 수 있습니까?
답변
이렇게 :
dependencies = Seq(coreProject % "compile->compile;test->test")
이는 Getting-Started-Multi-Project 가이드의 “Per-configuration classpath dependencies”섹션에서 설명합니다 .
답변
.dependsOn(coreProject % "compile->compile;test->test")
초기 프로젝트 선언 이후에도 이를 수행 할 수 있습니다 .
lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")