【问题标题】:Organizing files in a SBT-based scala project在基于 SBT 的 Scala 项目中组织文件
【发布时间】:2019-05-14 08:10:00
【问题描述】:

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

您能否建议每个文件夹的用途(例如,我的源文件应该放在哪里等),并指出我可以阅读更多信息的来源。

非常感谢

【问题讨论】:

    标签: scala intellij-idea sbt


    【解决方案1】:

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

    但是总结一下。

    .idea: 这包含你的想法项目的项目文件,与 sbt 本身没有直接关系。然而,idea(如果启用了自动刷新)会在每次 sbt 构建文件更改时更新自己的项目。

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

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

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

    来源: 这是您放置项目源文件的地方。您应该将任何 java 源代码放在 src/main/java 中,将 scala 源代码放在 src/main/scala 中。资源放在src/main/resources

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

    测试源放在src/test/javasource/test/scala里面,测试资源放在src/test/resources里面。

    目标 此文件夹是 sbt 的目标文件夹。所有编译的文件、生成的包等都放在这个目录的某个地方。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2018-03-05
    • 2018-01-30
    • 2022-01-18
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多