【问题标题】:Working on multiple interdependent SBT projects with IntelliJ使用 IntelliJ 处理多个相互依赖的 SBT 项目
【发布时间】:2017-10-19 01:50:33
【问题描述】:

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

我设法通过手动添加多个 SBT 项目并手动编辑它们的依赖项来让 IntelliJ 做到这一点,但是一旦我添加了库依赖项并刷新了 SBT 定义,我的编辑就消失了。

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

【问题讨论】:

  • 您是否有理由不使用单个多项目 SBT 构建,两个模块都作为子模块?您可以轻松同步版本号,并单独发布子模块,无需使用libraryDependenciesIntelliJ 将在单个会话中支持所有 SBT 子项目。
  • 我想单独发布项目,带有单独的版本计划。一个是图形库,另一个是游戏。两者之间的联系并不紧密。

标签: scala intellij-idea sbt


【解决方案1】:

我也在寻找您问题的解决方案。不过,在那之前,我希望能提供一个可以接受的解决方法。

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

lazy val otherProject = RootProject(file("../OtherProject")) 

之后,您需要使用 dependsOn 指定对 OtherProject 的依赖项:

lazy val myProjectRoot = project.in(file(".")).settings(...).dependsOn(otherProject)

IntelliJ 然后将 OtherProject 导入当前工作区,您可以同时处理这两个项目。

在提交之前,您必须将依赖项恢复为 Ivy2 规范。

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2012-02-04
    • 2015-09-24
    • 2018-05-31
    • 2015-08-24
    • 2021-02-21
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多