返回介绍

2.7 sbt

发布于 2024-09-08 18:29:25 字数 3260 浏览 0 评论 0 收藏 0

sbt 依赖 Java。

sbt 核心概念

  • Scala 基础。不可否认,熟悉 Scala 语法非常有帮助。 Programming in Scala ,Scala 的作者写的非常好的介绍。
  • .sbt 构建定义
  • 你的构建定义是一个大的 Setting 对象列表,sbt 使用 Setting 转换之后的键值对执行 task。
  • 为了创建 Setting ,在一个 key 上调用其中的一个方法: := , += 或者 ++= 。
  • 没有可变的状态,至于转换;例如,一个 Setting 将 sbt 的键值对集合转换成一个新的集合。不会就地改变任何代码。
  • 每一个设置都有一个特定类型的值,由 key 决定。
  • tasks 是特殊的设置,通过 key 产生 value 的计算在每次出发 task 的时候都会重新执行。Non-task 计算只会在构建定义的第一次加载时执行。
  • Scopes
  • 每一个 key 都可能有多个 value,按照 scope 划分。
  • scope 会用三个轴:configuration,project,task。
  • scope 允许你按项目、按 task、按 configuration 有不同的行为。
  • 一个 configuration 是一种类型的构建,例如 Compile 或者 Test 。
  • project 轴也支持 构建全局 scope。
  • scopes 回滚或 代理 到更通用的 scope。
  • 将大部分配置放在 build.sbt 中,但是用 .scala 构建定义文件定义类和更大的 task 实现。
  • 构建定义是一个 sbt 项目,来自于项目目录。
  • 插件 是对构建定义的扩展
  • 通过在 addSbtPlugin 方法在 project/plugins.sbt 中添加插件。(不是在项目基目录下的 build.sbt 中)。

下载: https://www.scala-sbt.org/download.html

安装:windows 下点击 msi 文件按提示安装即可。

2.7.2 构建定义和配置文件

build.sbt

sbt 在检查项目和处理构建定义文件之后,形成一个 Project 定义。构建定义有二种风格。

  • 多工程 .sbt 构建定义
  • bare .sbt 构建定义 : 由一个 Setting[_] 表达式的列表组成,而不是定义 Project。
 name := "hello"
 version := "1.0"
 scalaVersion := "2.12.3"

目录规约

和 maven 一样,sbt 有约定了一个通用的目录结构,使用约定的结构会使后面的工作简单很多。

src/
  main/
    resources/
    <files to include in main jar here>
    scala/
    <main Scala sources>
    java/
    <main Java sources>
  test/
    resources
    <files to include in test jar here>
    scala/
    <test Scala sources>
    java/
    <test Java sources>

配置文件(构建定义文件)为 xxx.sbt

2.7.3 构建命令

表格 24 sbt 常用命令清单

命令简介
clean删除所有生成的文件 (在 target 目录下)。
compile编译源文件(在 src/main/scala 和 src/main/java 目录下)。
test编译和运行所有测试。
console进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <参数>在和 sbt 所处的同一个虚拟机上执行项目的 main class。
package将 src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
help <命令>显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
reload重新加载构建定义(build.sbt, project/.scala, project/.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。

备注:终端输入 sbt 进入 sbt 的交互环境。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文