scala - 使用 IntelliJ 处理多个相互依赖的 SBT 项目

标签 scala intellij-idea sbt

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

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

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

最佳答案

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

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

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

之后,您需要使用 指定对 OtherProject 的依赖项。依赖 :
lazy val myProjectRoot = project.in(file(".")).settings(...).dependsOn(otherProject)

IntelliJ 然后将 OtherProject 导入当前工作区,您可以在两者上工作。

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

关于scala - 使用 IntelliJ 处理多个相互依赖的 SBT 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061456/

相关文章:

java - 如何将 JFROG 工件添加到 sbt.build 文件中?

scala - View 可以与并行集合一起使用吗?

scala - 在函数列表上折叠 flatMap/bind(也就是命名组合器!)

android-studio - Android Studio:如何重新格式化整个项目的代码?

scala - SBT 无法找到要运行或编译的测试

scala - 新的 play-2.1.1 安装中缺少 sbt/boot/directory。在 Linux Mint 14 上安装 Playframework

scala - 类型别名中的方差注释

scala - 通过 `State` 映射 `Lens`

intellij-idea - IntelliJ 代码覆盖率 : how to know which unit tests covered lines in source code

logging - IntelliJ 读取远程服务器日志文件