背景 工欲善其事, 必先利其器; 笔者习惯将所有用到的东西掌控在自己可控的范围内, 清晰每个流程, 以便发生问题的时候有思路并能快速响应得出解决方案.
比如默认安装的scala和SBT, 执行sbt
指令时, 默认会在用户目录下生成.ivy
文件, 该文件夹中存储从远程仓库中下载的构件; 笔者不喜欢该方式, 需要控制配置,启动参数和相关仓库地址.
安装 前提条件: 必须安装JDK, 若scala>=2.12.0, 则JDK>=1.8
scala 开发包: scala语言的开发包, 类比于JDK
SBT: 全称simple build tool
, 对于初次接触的同学来说, 其实并不简单; 一种构建工具, 类比于Maven
安装Scala开发包
根据操作系统环境选择合适的开发包.
将开发包下载至自己钟爱的目录并解压,
1 2 cd ~/devTools/ tar -xzvf scala-2.12 .2 .tgz
安装SBT
将开发包下载至自己钟爱的目录并解压,
1 2 cd ~/devTools/ unzip sbt-1.0 .2 .zip
配置 配置Scala 配置CLASS_PATH
1 2 3 4 vim ~/.bash_profile export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144 .jdk/Contents/Home export SCALA_HOME=/Users/ac/devTools/scala-2.12 .2 export PATH=$JAVA _HOME/bin:$SCALA _HOME/bin:$SBT _HOME/bin:$PATH
配置SBT 配置CLASS_PATH
1 2 3 vim ~/.bash_profile export SBT_HOME=/Users/ac/devTools/sbt export PATH=$JAVA _HOME/bin:$SCALA _HOME/bin:$SBT _HOME/bin:$PATH
配置依赖库本地仓库, 远程仓库 构建自己依赖库保存目录
1 2 3 4 5 6 cd ~mkdir sbt-repocd sbt-repomkdir repo sbtcd sbtmkdir boot
配置远程仓库地址 重点: 合理启用关闭其内的地址可大大减少等待时间.
1 2 cd ~/sbt-repo/ sbt vim repositories
内部配置参考如下:
1 2 3 4 5 6 7 8 [repositories] local-preloaded-ivy: file:////Users/ac/sbt-repo/repo/, [organization ]/[module ]/[revision ]/[type ]s/[artifact ](-[classifier] ).[ext] local-preloaded: file:////Users/ac/sbt-repo/repo/ aliyun nexus: http://maven.aliyun.com/nexus/content/groups/public/ # maven-central typesafe-maven-releases: http://dl.bintray.com/typesafe/maven-releases/, [organization ]/[module ]/[revision ]/[type ]s/[artifact ](-[classifier] ).[ext], bootOnly typesafe-ivy-releases: http://dl.bintray.com/typesafe/ivy-releases/, [organization ]/[module ]/[revision ]/[type ]s/[artifact ](-[classifier] ).[ext], bootOnly sbt-ivy-snapshots: https://dl.bintray.com/sbt/ivy-snapshots/, [organization ]/[module ]/[revision ]/[type ]s/[artifact ](-[classifier] ).[ext], bootOnly
如上配置了各种仓库, 中央库被注释, 若阿里云仓库
中没找到需要的构件时, 请开启中央库; 否则下载构件时会一直报错, 且编译无法通过.
配置依赖库本地仓库 Winows 7 进入sbt安装目录下的conf目录, 编辑sbtconfig.txt
文件, 如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # Set the java args to high -Xmx512M -XX :MaxPermSize= 256 m -XX :ReservedCodeCacheSize= 128 m # Set the extra SBT options -Dsbt .log.format=true -Dsbt .boot.directory=D :/sbt-repo/sbt/boot -Dsbt .global.base=D :/sbt-repo/sbt -Dsbt .ivy.home=D :/sbt-repo/repo -Dsbt .repository.config=D :/sbt-repo/sbt/conf/repo .properties -Dsbt .repository.secure=false
Linx或OSX 1 2 cd ~/devTools/sbt/conf vim sbtopts
按如下配置进行修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 # ------------------------------------------------ # # The SBT Configuration file. # # ------------------------------------------------ # # Disable ANSI color codes # #-no-colors # Starts sbt even if the current directory contains no sbt project. # -sbt-create # Path to global settings/plugins directory (default: ~/.sbt) # -sbt-dir /Users/ac/sbt-repo/sbt # Path to shared boot directory (default: ~/.sbt/boot in 0.11 series) # -sbt-boot /Users/ac/sbt-repo/sbt/boot # Path to local Ivy repository (default: ~/.ivy2) # -ivy /Users/ac/sbt-repo/repo # set memory options # #-mem <integer> # Use local caches for projects, no sharing. # #-no-share # Put SBT in offline mode. # #-offline # Sets the SBT version to use. #-sbt-version 0.11.3 # Scala version (default: latest release) # #-scala-home <path> #-scala-version <version> # java version (default: java from PATH, currently $(java -version |& grep version)) # #-java-home <path>
完成本地仓库和远程仓库配置后, 执行sbt
命令后:
下载构件将根据repositories
文件中配置的仓库地址尝试下载(找到一个可用的地址, 若所有地址都不存在需要的构件则报错)
下载时的临时文件信息和下载成功的构件包将存放于sbtopts
指定的本地仓库中, 在用户目录下不会再生成.ivy
文件夹
测试 打开terminal
, 输入scala
将进入REPL
1 2 3 4 5 AC -PRO :devTools ac $ scala Welcome to Scala 2.12.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144). Type in expressions for evaluation. Or try :help .scala >
打开terminal
, 输入sbt
, 发现会开始下载一些构件, 观察本地仓库, 发现内部多了些目录和文件.
1 2 3 4 5 AC-PRO:sbt ac$ sbt [warn] No sbt.version set in project /build .properties, base directory : /Users /ac/sbt-repo/sbt[info] Set current project to sbt (in build file :/Users /ac/sbt-repo/sbt/) [info] sbt server started at 127.0 .0 .1 :4232 sbt:sbt>
Intellij 配置 首次配置完scala和SBT后, 启Intellij IDEA, 进入Plugins
安装如下两个插件:
新建sbt项目, 发现正在下载一些构件(以上不是在执行sbt
指令时就下载至本地仓库了?), 这是因为Intellij IDEA未配置远程仓库和本地仓库, 采用了默认配置, 同时可发现用户目录下出现了.ivy
文件夹.
修改配置如下:
windows 7 配置路径: Build, Execution, Deployment → Build Tools → SBT
编辑VM parameters
如下:
1 2 3 4 5 6 -XX :MaxPermSize= 384 M -Dsbt .boot.directory=D :/sbt-repo/sbt/boot -Dsbt .global.base=D :/sbt-repo/sbt -Dsbt .ivy.home=D :/sbt-repo/repo -Dsbt .repository.config=D :/sbt-repo/sbt/conf/repo .properties -Dsbt .repository.secure=false
OSX 配置路径: Build, Execution, Deployment → Build Tools → SBT
编辑VM parameters
如下:
1 2 3 4 5 -XX :MaxPermSize= 384 M -Dsbt .boot.directory=/Users/ac /sbt-repo/sbt /boot -Dsbt.global.base=/ Users /ac/sbt-repo/sbt -Dsbt .ivy.home=/Users/ac /sbt-repo/repo -Dsbt .repository.config=/Users/ac /sbt-repo/sbt /repositories
删除用户目录下.ivy
文件夹, 重启Intellij IDEA, 构件sbt项目, 秒成, 同时用户目录下不再生成.ivy
文件夹.