Permalink
119 lines (103 sloc) 3.49 KB
import Settings._
import Testing._
lazy val core = (project in file("core"))
.settings(coreSettings:_*)
.withTestSettings
lazy val gcsFileSystem = (project in file("filesystems/gcs"))
.settings(gcsFileSystemSettings:_*)
.withTestSettings
.dependsOn(core)
.dependsOn(core % "test->test")
lazy val databaseSql = (project in file("database/sql"))
.settings(databaseSqlSettings:_*)
.withTestSettings
lazy val databaseMigration = (project in file("database/migration"))
.settings(databaseMigrationSettings: _*)
.dependsOn(core)
.withTestSettings
lazy val dockerHashing = (project in file("dockerHashing"))
.settings(dockerHashingSettings: _*)
.dependsOn(core)
.dependsOn(core % "test->test")
.withTestSettings
lazy val cromwellApiClient = (project in file("cromwellApiClient"))
.settings(cromwellApiClientSettings: _*)
.withTestSettings
lazy val services = (project in file("services"))
.settings(servicesSettings:_*)
.withTestSettings
.dependsOn(core)
.dependsOn(databaseSql)
.dependsOn(databaseMigration)
.dependsOn(core % "test->test")
lazy val backendRoot = Path("supportedBackends")
lazy val backend = (project in file("backend"))
.settings(backendSettings:_*)
.withTestSettings
.dependsOn(core)
.dependsOn(services)
.dependsOn(core % "test->test")
lazy val sfsBackend = (project in backendRoot / "sfs")
.settings(sfsBackendSettings:_*)
.withTestSettings
.dependsOn(backend)
.dependsOn(gcsFileSystem)
.dependsOn(backend % "test->test")
.dependsOn(services % "test->test")
lazy val tesBackend = (project in backendRoot / "tes")
.settings(tesBackendSettings:_*)
.withTestSettings
.dependsOn(sfsBackend)
.dependsOn(backend % "test->test")
lazy val sparkBackend = (project in backendRoot / "spark")
.settings(sparkBackendSettings:_*)
.withTestSettings
.dependsOn(sfsBackend)
.dependsOn(backend % "test->test")
lazy val jesBackend = (project in backendRoot / "jes")
.settings(jesBackendSettings:_*)
.withTestSettings
.dependsOn(backend)
.dependsOn(gcsFileSystem)
.dependsOn(backend % "test->test")
.dependsOn(gcsFileSystem % "test->test")
.dependsOn(services % "test->test")
lazy val engine = (project in file("engine"))
.settings(engineSettings: _*)
.withTestSettings
.dependsOn(core)
.dependsOn(dockerHashing)
.dependsOn(services)
.dependsOn(backend)
.dependsOn(gcsFileSystem)
.dependsOn(core % "test->test")
.dependsOn(backend % "test->test")
// In the future we may have a dedicated test backend like the `TestLocalAsyncJobExecutionActor`.
// For now, all the engine tests run on the "Local" backend, an implementation of an impl.sfs.config backend.
.dependsOn(sfsBackend % "test->compile")
.dependsOn(gcsFileSystem % "test->test")
lazy val root = (project in file("."))
.settings(rootSettings: _*)
.enablePlugins(DockerPlugin)
.withTestSettings
// Full list of all sub-projects to build with the root (ex: include in `sbt test`)
.aggregate(core)
.aggregate(dockerHashing)
.aggregate(gcsFileSystem)
.aggregate(databaseSql)
.aggregate(databaseMigration)
.aggregate(services)
.aggregate(backend)
.aggregate(sfsBackend)
.aggregate(sparkBackend)
.aggregate(jesBackend)
.aggregate(tesBackend)
.aggregate(engine)
.aggregate(cromwellApiClient)
// Next level of projects to include in the fat jar (their dependsOn will be transitively included)
.dependsOn(engine)
.dependsOn(jesBackend)
.dependsOn(tesBackend)
.dependsOn(sparkBackend)
// Dependencies for tests
.dependsOn(engine % "test->test")