文档章节

SBT无痛入门指南

joymufeng
 joymufeng
发布于 09/16 17:57
字数 1235
阅读 443
收藏 5

SBT 是 Scala 的构建工具,全称是 Simple Build Tool, 类似 Maven 或 Gradle。 SBT 的野心很大,采用Scala编程语言本身编写配置文件,这使得它稍显另类,虽然增强了灵活性,但是对于初学者来说同时也增加了上手难度。另外由于SBT默认从国外下载依赖,导致第一次构建非常缓慢,使用体验非常糟糕! 如果你是一名Scala初学者,本文希望帮你减轻一些第一次使用的痛苦。

本文的主要内容是帮助初学者从头到尾构建并运行一个Scala项目,重点在于讲解国内镜像仓库的配置。对于每一个操作步骤,会分别针对Windows、Mac和Linux三个主流操作系统进行讲解, 最终帮助你快速构建一个可运行的Scala开发环境。

第一步:安装SBT

单击这里下载 SBT 1.3.0,下载完成后解压到指定目录,例如 D:\Software\sbt-1.3.0,然后将 D:\Software\sbt-1.3.0\bin 添加至环境变量PATH。SBT 1.3.0 采用 Coursier 以无锁的方式并行下载依赖,极大地提升了使用体验!

请确认本机已安装Java运行环境。

 

第二步:设置国内仓库,加快构建过程

1) 设置全局仓库

首先创建 .sbt 目录。

如果是Windows系统,则进入CMD执行如下命令:

cd  C:\Users\USER_NAME
mkdir  .sbt
cd  .sbt

如果是Mac或Linux系统,则进入Bash执行如下命令:

cd  ~
mkdir  .sbt
cd  .sbt

然后创建 repositories 文件内容如下,并将文件拷贝到 .sbt 目录下,

[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
maven-central: https://repo1.maven.org/maven2/
sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

2) 设置所有项目均使用全局仓库配置,忽略项目自身仓库配置

该参数可以通过 Java System Property 进行设置。在 SBT 中,有三种方法可以设置 Java System Property,可以根据需要自行选择。

方法一:修改SBT配置文件(推荐)

提醒一下,  sbt-1.3.0/conf/ 目录下有两个配置文件,  sbtconfig.txt 仅适用于  Windows 平台,而  sbtopts 仅适用于  Mac/Linux 平台。

针对 Windows 平台,打开 sbt-1.3.0/conf/sbtconfig.txt 文件,在末尾新增一行,内容如下:

-Dsbt.override.build.repos=true

针对 Mac/Linux 平台,打开 sbt-1.3.0/conf/sbtopts 文件,在末尾新增一行,内容如下:

-Dsbt.override.build.repos=true

方法二: 设置环境变量

在 Windows 上通过 set 命令进行设置,

set SBT_OPTS="-Dsbt.override.build.repos=true"

在 Mac/Linux 上使用 export 命令进行设置,

export SBT_OPTS="-Dsbt.override.build.repos=true"

方法三: 传入命令行参数

执行 sbt 命令时, 直接在命令后面加上配置参数,

sbt -Dsbt.override.build.repos=true

 

注意,如果由于某种原因,  repositories 文件并不在默认的  .sbt 目录下,则需要通过  -Dsbt.repository.config 指定  repositories 文件的具体位置,该参数的三种设置方法同  -Dsbt.override.build.repos 。例如采用修改SBT配置文件方式  (推荐),则打开  sbt-1.3.0\conf\sbtconfig.txt 文件,在末尾新增如下内容:
-Dsbt.override.build.repos=true
-Dsbt.repository.config=path_to_repositories_file

 

第三步:构建并运行第一个Scala项目

1)修改项目SBT构建版本

单击 hello-scala 下载一个最简单的Scala项目,并解压到指定目录,如 D:\idea-projects 。由于SBT 1.3.0包含了多项性能提升,如果是已有的本地项目,请手动将项目的SBT构建版本改成1.3.0 。具体方法为:打开 project/build.properties 文件,将内容修改如下:

sbt.version = 1.3.0

在命令行中切换至 hello-scala 目录,执行sbt命令进入 sbt shell 

第一次进入  sbt shell 时,由于需要下载相关依赖,大概需要几十秒时间,第二次及以后进入  sbt shell 会很快。

检查当前项目的SBT构建版本是否为1.3.0,

sbt:hello-scala> sbtVersion
[info] 1.3.0
sbt:hello-scala>

2)确认全局仓库是否已经覆盖项目自身仓库

sbt:hello-scala> show overrideBuildResolvers
[info] true

确认仓库列表是否与 ~/.sbt/repositories 文件一致:

sbt:hello-scala> show fullResolvers

3)编译并运行

确认无误后执行编译命令,

sbt:hello-scala> compile
[info] Compiling 1 Scala source to D:\idea-projects\hello-scala\target\scala-2.12\classes ...
[success] Total time: 4 s, completed 2019-9-16 11:39:41

查看SBT本地缓存,确认一下是否从国内仓库下载依赖。针对不同的操作系统,对应的缓存路径如下:

  • Windows缓存路径是 %LOCALAPPDATA%\Coursier\Cache\v1 ,即如果用户名是joymufeng,则完整路径是 C:\Users\joymufeng\AppData\Local\Coursier\Cache\v1 。
  • Linux缓存路径为 ~/.cache/coursier/v1 
  • Mac缓存路径为 ~/Library/Caches/Coursier/v1 。

下面是Windows缓存截图:

最后执行项目,

© 著作权归作者所有

joymufeng

joymufeng

粉丝 102
博文 74
码字总数 68460
作品 2
杨浦
高级程序员
私信 提问
Scala开发者的Spring-Boot快速上手指南 01

做为一个Scala爱好者,是很想基于 Lightbend 的一套架构进行软件开发的。Play,Akka,Scala,Spark……。不过理想很丰满,现实却很骨感。鉴于那批原教旨主义者,他们对 Spring 已经疯狂迷恋,...

羊八井
2016/03/04
1K
2
[大数据之Spark]——快速入门

本篇文档是介绍如何快速使用spark,首先将会介绍下spark在shell中的交互api,然后展示下如何使用java,scala,python等语言编写应用。可以查看编程指南了解更多的内容。 为了良好的阅读下面的文...

青夜之衫
2017/12/04
0
0
无痛的机器学习第二季目录

以下是对这一年来完成的文章的汇总贴,陆续还会有新的内容加入,尽情期待! 无痛的机器学习第一季目录传送门:无痛的机器学习第一季目录 增强学习 增强学习入门1——基本概念 增强学习入门2...

冯超
2017/11/22
0
0
Julia 小白 Day 14 :Python、R、Julia 装包不完全排雷指南

前情提要: 概述 本地环境:Windows、Mac 在线环境:无痛环境、定制无痛环境 快速学习:DataFrames 资源 案例 对于很多初学者来说,Python、R、Julia这些需要一定折腾能力的语言,开始学习时...

_KevinZhang_
2018/09/02
0
0
手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目

1. 安装 sbt 打开 terminal,检查 java 版本,安装 sbt: http://www.scala-sbt.org/release/docs/Installing-sbt-on-Mac.html 2. 下载 jetbrains 的 community 版本, 安装 Scala plugin 打开......

aliceyangxi1987
2017/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
9
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部