我正在开发几个相互依赖的模块,并希望在一个 IDEA 项目中一起使用它们。我正在使用sbt-idea从 sbt 构建定义生成 IDEA 项目,这对单个项目非常有用。然而,在多模块的情况下,到目前为止我尝试过的事情并不完全有效:
使用 sbt-idea 为每个模块独立生成一个 IDEA .iml 文件;然后从头开始创建一个主 IDEA 项目并将这些模块添加到其中。这使得模块源在同一个窗口中都是可编辑的,但它们之间的依赖关系没有被跟踪(因此尝试从foo项目中的某个源导航到bar中的某个东西会将我带到bar的导入库版本,而不是本地源)。
使用 sbt多项目构建(又名子项目),其中父项目的 Build.scala 包含以下内容:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
这几乎可以工作,因为 sbt-idea 生成了一个主 IDEA 项目,其中跟踪了子项目之间的依赖关系。但是有两个警告:
- 子项目必须位于主项目的子目录中似乎是一个 sbt 限制(即,
file("../foo")
不允许)。这并不是我真正想要的(如果一个模块——例如“utils”或“commons”包——用于两个不同的主项目呢?)但我可以接受它。 - 我的一个子项目有自己的子项目;我不确定 sbt 本身是否正确处理这些嵌套项目,但无论如何它们都会被 sbt-idea 忽略。显然,我需要将嵌套子项目递归地包含在主项目中。
总结一下:我想将可能已经有子项目的模块收集到一个带有跟踪依赖项的大型 IDEA 项目中,以便于编辑。我该怎么做?谢谢!