Можно ли перезаписать и использовать одно и то же значение в нескольких файлах build.sbt?

У меня есть следующая фиктивная структура проекта:

|───employee-uService
|   ├───backend
|   |    ├───employee-api
|   |        ├───project
|   |        ├───src
|   |        │   └───main
|   |        │       ├───protobuf
|   |        │       └───scala
|   |        ├───build.sbt
|   ├───build.sbt
|───build.sbt (root project build)

Build.sbt в employee-api содержит определение проекта с .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?

1 ответ

Решение

Учитывая структуру каталогов, которые вы описали (прототипы находятся под src/main/protobuf в каждом проекте) вам не нужно устанавливать PB.protoSources для каждого проекта, так как это по умолчанию. Однако, если вы хотите указать это явно и разрешить пользователям переопределять, вы можете иметь в своем scalapbSettings функция следующей строки:

val protoSources = PB.protoSources in Compile := Seq(
    file((sourceDirectory in Compile).value / projectFolder))

Тогда projectFolder должно быть относительно src/main (и может иметь значение по умолчанию "protobuf" из)

Совет: в оболочке SBT вы можете набрать, protocSources чтобы увидеть, какова ценность этих настроек для каждого проекта.

Другие вопросы по тегам