我有以下虚拟项目结构:
|───employee-uService
| ├───backend
| | ├───employee-api
| | ├───project
| | ├───src
| | │ └───main
| | │ ├───protobuf
| | │ └───scala
| | ├───build.sbt
| ├───build.sbt
|───build.sbt (root project build)
employee-api中的build.sbt包含具有.settings(scalapbSettings("."))
设置的项目定义。
scalapbSettings
函数设置原始源文件夹,例如:
val protoSources = PB.protoSources in Compile := Seq(file(s"$projectFolder/src/main/protobuf"))
其中projectFolder是函数的参数。
层次结构中较高一层的build.sbt(employee-uService)定义了employee-api和相应的impl项目并将其聚合,而根版本则将...- uService项目聚合。
根据我正在编译的项目,scalapbSettings
函数的给定字符串参数必须更改以表示正确的路径。 (例如:在运行api编译时,其根目录必须为employee-uService/backend/employee-api
。
如何将一个值传递给可以在不同的build.sbt文件中覆盖的函数调用?
答案 0 :(得分:0)
鉴于您描述的目录结构(每个项目的原型位于src/main/protobuf
下),您无需为每个项目设置PB.protoSources
,因为这是默认设置。但是,如果要显式指定它并允许用户覆盖,则可以在scalapbSettings
函数中包含以下行:
val protoSources = PB.protoSources in Compile := Seq(
file((sourceDirectory in Compile).value / projectFolder))
然后projectFolder应该相对于src/main
(并且可以具有默认值"protobuf"
)
提示:在SBT shell中,您可以键入protocSources
来查看每个项目的此设置的值。