sbt共享项目之间的依赖关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sbt共享项目之间的依赖关系相关的知识,希望对你有一定的参考价值。

我正在寻找一种跨项目(但不是子项目)共享配置(例如依赖项)的方法。

我想知道是否有可能在某个sbt项目中集中依赖项并从其他几个sbt项目中获取。

如果没有简单的方法,我应该考虑开发一个插件来公开这些依赖项吗?

答案

也许开发一个包含这个设置的插件是最好的解决方案。这个插件将是一个独立的项目,它可以通过使用addSbtPlugin(...)在项目中重用。您可以使用本地存储库来托管(构建的)插件。

另一答案

我的想法是将所有常见的依赖项发布到Maven仓库。

但是,我更喜欢多模块项目机制。下面是一个例子(播放):

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(
  ...
 )
)

以上是关于sbt共享项目之间的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

如何解决具有不同包装常春藤类型的sbt中的依赖关系?

SBT 多项目中未解决的依赖关系

未解决的依赖关系:sbt-plugin;2.7.0 尝试编译播放模板项目时

为啥我的 sbt 项目依赖项不起作用? (坚持尝试远程获取它)

sbt:模块之间的循环依赖?

未解决的依赖关系 sbt with play framework