Определить подпроекты в другом файле, чем build.sbt - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь определить многопроектную сборку с последовательным числом подпроектов:

.
├── build.sbt
├── project/
│   ├── dependencies.scala
│   ├── tasks.scala
│   └── settings.scala
├── lib_1/
│   └── src/
├── ...
└── lib_n/
    └── src/

Эти подпроекты в настоящее время определены в build.sbt:

val outputJarFolder = "/some/path/"
lazy val comonSettings = /* ... */

lazy val lib_1 = (project in file ("lib1")).settings(
    name:="LibOne",
    commonSettings,
    libraryDependencies ++= Seq(scalaTest, jsonLib, scalaXML, commonsIo),
    Compile/packageBin/artifactPath := file(outputJarFolder + "lib1.jar")
)

// ... more libs ...

lazy val lib_n = (project in file ("libn")).settings(
    name:="LibLast",
    commonSettings,
    Compile/packageBin/artifactPath := file(outputJarFolder + "libn.jar")
)
    .depensOn(lib_2, lib_12)

Как я могу определить эти подпроекты в другом файле, отличном от build.sbt , чтобы "очистить" этот файл? Я все еще хочу иметь возможность определять их в лексикографическом порядке (поэтому lazy является обязательным). Я работаю с sbt версии 1.2.8 и scala 2.10.


Я пытался:

  1. Поместить объявление этих lib_k переменных в файл scalaи импортируя его -> sbt говорит: "классы не могут быть ленивыми" .
  2. Поместить это объявление в объект (или в класс и создать его экземпляр в build.sbt) ->sbt projects не содержит подпроектов.

1 Ответ

1 голос
/ 04 ноября 2019

sbt документация упоминает об этом, но не особо подчеркивает (возможно, во избежание поощрения слишком большого разнообразия в том, как сборки определяются при отсутствии общего соглашения):

Определение сборки описано в build.sbt ( на самом деле любые файлы с именем *.sbt) в базовой директории проекта.

Таким образом, вы можете разбить ваш build.sbtфайл в несколько отдельных .sbt файлов в корне проекта с разными именами.

Я также рекомендую прочитать документацию по Организация сборки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...