Scala 与IntelliJ一起参与多个相互依存的SBT项目

Scala 与IntelliJ一起参与多个相互依存的SBT项目,scala,intellij-idea,sbt,Scala,Intellij Idea,Sbt,我正在开发一个库和一个并行依赖于它的应用程序,我想分别发布它们。由于我经常编辑这两个模块,我希望能够在IntelliJ中加载这两个模块,以便“转到定义”正确工作(即,将我带到另一个项目的可编辑源),并且重建将包含在另一个模块中所做的更改,而无需重新运行sbt publishLocal并刷新另一个项目 通过手动添加多个SBT项目并手动编辑它们的依赖项,我成功地让IntelliJ做到了这一点,但在添加库依赖项并刷新SBT定义后,我的编辑就消失了 我怎样才能让IntelliJ理解另一个项目上的库依赖关

我正在开发一个库和一个并行依赖于它的应用程序,我想分别发布它们。由于我经常编辑这两个模块,我希望能够在IntelliJ中加载这两个模块,以便“转到定义”正确工作(即,将我带到另一个项目的可编辑源),并且重建将包含在另一个模块中所做的更改,而无需重新运行
sbt publishLocal
并刷新另一个项目

通过手动添加多个SBT项目并手动编辑它们的依赖项,我成功地让IntelliJ做到了这一点,但在添加库依赖项并刷新SBT定义后,我的编辑就消失了


我怎样才能让IntelliJ理解另一个项目上的
库依赖关系应该实现并作为模块导入,而不是从本地maven存储库导入?

我也在寻找解决您问题的方法。然而,到那时为止,我有希望提供一个可以接受的解决办法

您可以暂时从项目中删除Ivy2依赖项,并将其定义为sbt中的项目。例如,如果您的OtherProject与当前项目位于同一目录中,则可以按如下方式添加它:

lazy val otherProject = RootProject(file("../OtherProject")) 
之后,您需要使用dependsOn指定对其他项目的依赖关系:

lazy val myProjectRoot = project.in(file(".")).settings(...).dependsOn(otherProject)
IntelliJ然后将OtherProject导入当前工作区,您可以同时处理这两个项目


在提交之前,必须将依赖关系恢复为Ivy2规范

有没有理由不使用一个多项目SBT构建,将两个模块都作为子模块?您可以轻松地同步版本号,并单独发布子模块,而无需使用
libraryDependencies
。IntelliJ将在一次会议中尊重所有SBT子项目。我想单独发布这些项目,并制定单独的版本计划。一个是图形库,另一个是游戏。这两者之间没有紧密的联系。