你如何将sbt项目组成一个版本?

时间:2015-12-29 01:46:18

标签: sbt

关于撰写sbt项目的问题: 我分叉了一个图书馆项目(https://github.com/allenai/pipeline),并希望在我使用它的项目上进行攻击。如果我将它们放在同一个多项目构建中 - 我真的是本地发布和消费的首选选项 - sbt将不会读取嵌套fork的project目录(其中.scala文件和插件定义最初驻留)。 例如。我试着在build.sbt:

lazy val pipeline = (project in file("pipeline"))

lazy val githubCruncher = (project in file("."))
  .dependsOn(pipeline)

我收到错误,表明目录pipeline/project被忽略;正在读取嵌套项目build.sbt本身,但是sbt在其兄弟project目录中找不到与它一起定义的内容(因此无法加载构建定义) )。

那么,我是否必须将这两个项目压缩成一个build.sbt或者我可以在某种程度上优雅地组合这两个项目?我问,因为这也是我工作的其他项目的一个问题,我最终将每个构建定义细节压缩成一个巨大的整体 - 尽管我更喜欢将一些子项目作为独立项目分发给我自己的开发配置。

1 个答案:

答案 0 :(得分:1)

根据我的经验,看起来项目的project目录中的所有内容都被拉入多项目构建中 - 需要移至{em> root 下的project多项目构建,而拉入项目的build.sbt不必被压扁 - 从顶层build.sbt引用它将起作用(除非该引用后面跟着定义它位于顶层build.sbt)。

来自拉入式项目的Sbt插件随后将应用于统一的多项目构建,并且需要在disablePlugins处禁用其他子项目,无论是否适当或需要。