关于撰写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
或者我可以在某种程度上优雅地组合这两个项目?我问,因为这也是我工作的其他项目的一个问题,我最终将每个构建定义细节压缩成一个巨大的整体 - 尽管我更喜欢将一些子项目作为独立项目分发给我自己的开发配置。
答案 0 :(得分:1)
根据我的经验,看起来项目的project
目录中的所有内容都被拉入多项目构建中 - 需要移至{em> root 下的project
多项目构建,而拉入项目的build.sbt
不必被压扁 - 从顶层build.sbt
引用它将起作用(除非该引用后面跟着定义它位于顶层build.sbt
)。
来自拉入式项目的Sbt插件随后将应用于统一的多项目构建,并且需要在disablePlugins
处禁用其他子项目,无论是否适当或需要。