2015-09-16 6 views
1

Я ищу способ совместного использования конфигурации (например, зависимостей) между проектами (но не подпроектами).sbt-зависимые отношения между проектами

Мне было интересно, можно ли централизовать зависимости в каком-то проекте sbt и получить их из нескольких других проектов sbt.

Если нет простого способа, следует ли мне подумать о разработке плагина, чтобы разоблачить эти зависимости?

ответ

1

Возможно, разработка плагина, содержащего эти настройки, является лучшим решением здесь. Этот плагин будет независимым проектом, и его можно использовать повторно через проекты с помощью addSbtPlugin (...). Вы можете использовать локальный репозиторий для размещения (встроенного) плагина.

+0

Плагин sbt не режет его, потому что вам нужно управлять версией плагина в каждой сборке sbt всякий раз, когда вы меняете или обновляете общие версии. Бьюсь об заклад, вы забудете это сделать. Это эквивалентно обновлению версий вручную, а не их совместному использованию. –

1

Моя идея состоит в публикации всех общих зависимостей для репозитория Maven.

Однако я предпочитаю многомодульный механизм проекта. Ниже приведен пример (Play):

lazy val commonSettings = Seq(
    version := "1.0", 
    organization := "abc", 
    scalaVersion := "2.11.6", 
    resolvers ++= Seq(
    ... 
), 
    ... 
) 
lazy val root = (project in file(".")).enablePlugins(PlayScala) 
    .settings(commonSettings: _*) 
    .aggregate(core, dao, models) 
    .settings(
    name := "root", 
    version := "1.0", 
    libraryDependencies ++= Seq(
    ... 
) 
) 
lazy val core = (project in file("./modules/core")) dependsOn dao  settings(commonSettings: _*) settings(
    name := "core", 
    libraryDependencies ++= Seq(
    ... 
) 
) 
lazy val dao = (project in file("./modules/dao")) dependsOn models settings(commonSettings: _*) settings(
    name := "dao", 
    libraryDependencies ++= Seq(
    ... 
) 
) 
lazy val models = (project in file("./modules/models")) settings(commonSettings: _*) settings(
    name:= "models", 
    libraryDependencies ++= Seq(
    ... 
) 
) 
+0

Спасибо, мне также нравится проект с несколькими модулями, но есть проект, который слишком велик для этого. – chpache

Смежные вопросы