Intellij IDE的新手,没有Java背景。我已经查看Build Definition以了解如何组织我的scala文件,但他们的示例并未涵盖所附的基于SBT的项目的完整结构。
你能告诉每个文件夹应该用于什么(例如我的源文件应该去哪里等),并指出我可以阅读更多信息的来源。
答案 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/java
和source/test/scala
内,测试资源位于src/test/resources
。
<强>靶强> 此文件夹是sbt的目标文件夹。所有已编译的文件,生成的包等都放在此目录中的某个位置。
这个目录中的大多数东西都不是那么有趣,因为大多数东西只是内部的东西。但是,如果您通过调用sbt package
来构建jar文件,那么它将被放置在target/scala-x
内(其中x
是scala版本)。还有很多不同的插件,它们可以以不同的方式打包您的应用程序,它们通常也会将包文件放在目标目录中的某个位置。