是否可以在多个 build.sbt 文件中覆盖并使用相同的值?
Is it possible to overwrite and use the same value in multiple build.sbt files?
我有以下虚拟项目结构:
|───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
函数的给定字符串参数必须更改以表示正确的路径。 (例如:在根目录中它必须是 employee-uService/backend/employee-api
而当 运行 和 api 编译时,它是 .
.
我怎样才能将一个值传递给可以在不同 build.sbt 文件中覆盖的函数调用?
鉴于您描述的目录结构(原型在每个项目中的 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
以查看此设置对每个项目的价值。
我有以下虚拟项目结构:
|───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
函数的给定字符串参数必须更改以表示正确的路径。 (例如:在根目录中它必须是 employee-uService/backend/employee-api
而当 运行 和 api 编译时,它是 .
.
我怎样才能将一个值传递给可以在不同 build.sbt 文件中覆盖的函数调用?
鉴于您描述的目录结构(原型在每个项目中的 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
以查看此设置对每个项目的价值。