【发布时间】:2019-01-09 19:40:40
【问题描述】:
我想创建一个具有继承和共享依赖项的 SBT 项目。
使用 Maven 的 POM 文件,有Project Inheritance 的想法,您可以在其中设置parent 项目。我想对 SBT 做同样的事情。
xchange-stream library 在从父项目编译时使用 Maven 的项目继承来解决子项目依赖关系。
这是我对文件结构的想法:
sbt-project/
project/
dependencies.scala # Contains dependencies common to all projects
build.sbt # Contains definition of parent project with references
# to subprojects
subproject1/
build.sbt # Contains `subproject3` as a dependency
subproject2/
build.sbt # Contains `subproject3` as a dependency
subproject3/
build.sbt # Is a dependency for `subproject1` and `subproject2`
project1 和 project2 可以在它们的依赖项列表中包含 project3,如下所示:
libraryDependencies ++= "tld.organization" % "project3" % "1.0.0"
这样,当subproject1 或subproject2 在其子目录中通过调用sbt compile 进行编译时,或者当父级:sbt-project 从主sbt-project 目录编译时,将编译subproject3并通过 SBT 在本地发布,或者以其他方式提供给需要它的项目。
另外,如何在sbt-project/build.sbt 或sbt-project/project 目录中的任何位置指定共享依赖项,以便在这些子目录中调用sbt compile 时,它们可以在subproject1 和subproject2 中使用?
以下示例无助于回答上述任何一点:
jbruggem/sbt-multiproject-example: 使用递归build.sbt文件,但不共享子项目之间的依赖关系。Defining Multi-project Builds with sbt:
pbassiner/sbt-multi-project-example: 对其子目录中的项目使用单个build.sbt文件。sachabarber/SBT_MultiProject_Demo: 使用单个build.sbt文件。
【问题讨论】:
标签: sbt