Sbt的gen-idea总是创建两个IntelliJ项目

时间:2013-09-03 06:40:00

标签: scala sbt

我是SBT的新手。只是好奇为什么sbt的gen-idea总是产生两个IntelliJ项目:

 .idea
 .idea_modules

当我打开生成的项目时,“project”目录始终作为与顶级项目不同的单独项目。名称是“myproject-build”。

只是想知道这是否正常?

感谢。

2 个答案:

答案 0 :(得分:0)

是的,这是正常的,这是默认行为。您可以通过排除某些文件夹来更改它(请参阅此处提供的文档:https://github.com/mpeltonen/sbt-idea 排除某些文件夹

那么.idea和.idea_modules有什么区别?

.idea_module生成IDEA模块,而.idea生成IDEA项目。

简而言之项目可以是多模块或单模块,也包含IntelliJ库。

来自doc(http://confluence.jetbrains.com/display/IDEADEV/Structure+of+IntelliJ+IDEA+Project

更长版

<强>项目

  

在IntelliJ IDEA中,项目封装了所有源代码,   库,将指令构建到单个组织单元中。   你在IntelliJ IDEA中所做的一切都是在一个环境中完成的   项目。一个项目定义了一些被称为模块和集合的集合   库。取决于对逻辑和功能的要求   项目,您可以创建单个模块或多模块项目。

<强>模块

  

模块是一个独立的功能单元,可以运行,测试,   并独立调试。模块包括诸如源之类的东西   代码,构建脚本,单元测试,部署描述符等   项目中,每个模块都可以使用特定的SDK或继承定义的SDK   项目级别(请参阅本文档后面的SDK部分)。一个   模块可以依赖于项目的其他模块。

答案 1 :(得分:0)

是的,IDEA的SBT插件是可以的。

通常IDEA项目由顶级.idea目录(包含项目通用配置)和几个*.iml文件组成,一个用于项目中的每个模块(特定于模块的配置,如facets) ,排除目录,自定义依赖项)。这些文件通常位于相应模块的顶级目录中。

另一方面,SBT插件做了一些不寻常的事情。它创建标准.idea目录,但它将所有项目模块存储在一个位置,即项目顶级目录中的.idea_modules目录。 IDEA项目结构完全支持这一点,毕竟这是一组XML。

对于project目录/模块,它是SBT构建的标准功能。它包含您的构建配置。请参阅SBT manual

前面是关于SBT插件,它目前存在于插件存储库中。在活动开发中有一个official SBT plugin,它保持熟悉的模块结构(没有.idea_modules目录)并且与SBT具有更高的集成度。后者在依赖管理中最为突出 - 官方插件提取依赖性,甚至是非托管的,并使它们可用于IDE;目前的SBT插件无法做到这一点。