在基于SBT的scala项目中组织文件

时间:2016-09-21 06:45:38

标签: scala intellij-idea sbt

Intellij IDE的新手,没有Java背景。我已经查看Build Definition以了解如何组织我的scala文件,但他们的示例并未涵盖所附的基于SBT的项目的完整结构。

你能告诉每个文件夹应该用于什么(例如我的源文件应该去哪里等),并指出我可以阅读更多信息的来源。

非常感谢 Project structure

1 个答案:

答案 0 :(得分:6)

这里描述得很好: http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Directories.html

但总结一下。

<强> .idea: 这包含您的想法项目的项目文件,并没有与sbt本身直接相关。但是,每次sbt构建文件发生更改时,想法(如果启用了自动刷新)都会更新自己的项目。

<强>项目: 这包含sbt项目文件,主构建文件(以.sbt结尾的文件)除外。 Sbt构建本身基于scala,如果您需要在构建中包含一些scala代码(例如,代码生成/元编程,预编译器宏),那么您可以将scala源文件放在此目录中。这些文件的代码可以在构建系统中使用,而不是项目本身的一部分。要真正了解构建是如何构建的,那么您需要了解构建sbt文件和scala文件的方式的区别。当您运行sbt时,它将搜索您所在目录中的.sbt个文件,当找到这些文件时,它将搜索项目目录中的scala文件。这些文件是构建系统的源,但由于这些是源文件,因此需要先构建它们才能使用它们。为了构建这个构建系统,sbt使用sbt。因此需要构建系统来构建构建系统。因此,它在项目目录中查找sbt文件,在项目/项目中查找此构建的scala文件,并构建这些文件以获得构建系统,该构建系统可以构建构建系统(可以构建项目)。实际上它可以继续递归到任何project/project/project...目录,直到它找到一个不包含scala文件的项目文件夹,因此在使用之前不需要构建。

项目内的目标文件夹,是构建定义的sbt构建的目标文件夹。请参阅下面的目标文件夹。

通常你不需要担心这个;请记住,根目录中的build.sbt是项目的构建脚本。 project/plugins.sbt定义为构建系统激活的插件,project/build.properties包含特殊的sbt属性。目前我唯一的sbt属性是应该使用什么版本的sbt。

<强>的src: 这是您放置项目源文件的位置。您应该将src/main/java中的所有Java源代码放在src/main/scala中的scala源代码中。资源放在src/main/resources中。

如果您的某些代码与不同版本的scala不兼容,则通常会使用src/main/scala_2.11文件夹。在这种情况下,您可以配置sbt以在为不同版本的scala构建时使用不同的源文件。你可能不需要这个,所以我建议你删除src/main/scala_2.11文件夹。

测试源位于src/test/javasource/test/scala内,测试资源位于src/test/resources

<强>靶 此文件夹是sbt的目标文件夹。所有已编译的文件,生成的包等都放在此目录中的某个位置。

这个目录中的大多数东西都不是那么有趣,因为大多数东西只是内部的东西。但是,如果您通过调用sbt package来构建jar文件,那么它将被放置在target/scala-x内(其中x是scala版本)。还有很多不同的插件,它们可以以不同的方式打包您的应用程序,它们通常也会将包文件放在目标目录中的某个位置。