У меня есть SBT Scala мульти-проект со следующей структурой:Контроля нагрузка зависимости двусмысленность от SBT несколько проектов
multiprojectRoot
project/SharedProjectBuildCode.scala
project1
src/sourceFiles
project1-build.sbt
project2
src/sourceFiles
project2-build.sbt
projectN
src/sourceFiles
projectN-build.sbt
multiprojectRoot/проект/SharedProjectBuildCode.scala: содержит определение несколько проектов, которые используют dependsOn для создания зависимостей от локальных проектов. Например:
lazy val project2 = Project( ... ).dependsOn(project1)
multiprojectRoot/project2/project2-build.sbt: Содержит настройки и зависимостей для данного проекта. Например:
name := "project2" libraryDependencies ++= Seq( ... "my.company" % "project1" % "1.0" )
Первая зависимость к project1 объявляется с dependsOn на SharedProjectBuildCode.scala файл и второй создан на отдельный файл определения сборки project2-build.sbt.
Таким образом, определение project2 содержит либо:
- неоднозначная зависимость к project1 или
- двойной зависимости к project1
Мы хотим сохранить эту структуру проекта, потому что является лучшим для наш текущий рабочий процесс:
- Независимые .sbt файлы служат автономным развертыванием nt для каждого проекта на нашем сервере непрерывной доставки.
- Multi-project .scala file with dependsOn используется для облегчения разработки, что позволяет избежать таких вещей, как непрерывный publishLocal.
Мы должны иметь контроль над такими неопределенностями зависимости каким-то образом. Вы можете мне помочь?
Спасибо tyler. Дело в том, что мы хотим сохранить независимые .sbt файлы также автономными для развертывания. DependsOn следует использовать для разработки, а автономная сборка проекта будет использоваться для развертывания на нашем сервере непрерывной доставки. – chaotive
Я думаю, вы можете достичь этого без проекта с несколькими модулями. Просто сделайте все автономные проекты и используйте sbt publish-local для сборки, а затем libraryDependencies должны работать как ожидалось в sbt-файле. –
Ну, publishLocal - это именно то, чего мы хотим избежать в процессе разработки без развертывания. Поскольку между проектами существует много кода, необходимо выполнить ручные шаги для публикацииLocal для каждого изменения в общем коде, это действительно замедлит нас и сделает процесс более ручным управлением. Должен быть способ решить эту проблему. – chaotive