sbt 跨项目共享依赖
sbt share dependencies across projects
我正在寻找一种跨项目(但不是子项目)共享配置(例如依赖项)的方法。
我想知道是否可以集中某些 sbt 项目中的依赖项并从其他几个 sbt 项目中获取这些依赖项。
如果没有简单的方法,我是否应该考虑开发一个插件来公开这些依赖项?
我的想法是将所有公共依赖项发布到 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(
...
)
)
也许开发一个包含此设置的插件是最好的解决方案。
这个插件将成为一个独立的项目,并且可以通过使用 addSbtPlugin(...) 在项目之间重复使用。
您可以使用本地存储库来托管(构建的)插件。
我正在寻找一种跨项目(但不是子项目)共享配置(例如依赖项)的方法。
我想知道是否可以集中某些 sbt 项目中的依赖项并从其他几个 sbt 项目中获取这些依赖项。
如果没有简单的方法,我是否应该考虑开发一个插件来公开这些依赖项?
我的想法是将所有公共依赖项发布到 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(
...
)
)
也许开发一个包含此设置的插件是最好的解决方案。 这个插件将成为一个独立的项目,并且可以通过使用 addSbtPlugin(...) 在项目之间重复使用。 您可以使用本地存储库来托管(构建的)插件。