我是sbt的新手,我想重现一个包含许多嵌套模块的复杂项目结构。
例如,我有以下结构:
.
build.sbt
|_web
|_api
|_dto
|_domain
build.sbt如下:
name := "myProject"
version := "1.0"
scalaVersion := "2.12.4"
resolvers += Resolver.sonatypeRepo("public")
libraryDependencies += "com.typesafe.play" %% "play" % "2.6.10"
lazy val commonSettings = Seq(
organization := "com.example",
version := "0.1",
scalaVersion := "2.12.4"
)
// root module
lazy val root = (project in file("."))
.aggregate(domain, web)
// domain module
lazy val domain = project.settings(commonSettings)
// web module
lazy val web = project.settings(
commonSettings,
libraryDependencies := Seq("com.typesafe.play" %% "play" % "2.6.10"),
name := "myproj-web"
).dependsOn(domain)
// web api module
lazy val webApi = (project in file("./web/api")).settings(
commonSettings,
libraryDependencies := Seq("com.typesafe.play" %% "play" % "2.6.10"),
name := "myproj-web-api"
).dependsOn(domain)
我遇到的第一个问题是我无法在web/api
访问我的库,但我可以在web/
中访问。
第二个问题是我不喜欢file("./web/api")
。是否可以让sbt理解嵌套文件夹,因为它理解普通文件夹(如web
或domain
)。
此外,是否可以为每个模块设置build.sbt
。例如,web
包含api和dto的构建文件,但保留聚合和仅在根项目上调用构建的能力,并且构建所有其余项目。