之前明明跑起来的play_helloworld_sample不知道改了什么突然就提示找不到import的包了,所以花了一些时间来研究sbt的工作原理,虽然最终我现在还是不知道我到底做了什么弄坏了sample项目,但起码学到了一些很有用的知识:
sbt的版本问题
sbt的版本有两种:一种是sbt-launcher的版本,这个sbt位于以下位置:
ls -l /usr/local/bin/sbt
或者
sbt sbtVersion // 需在非sbt项目中运行
另一种是针对某一项目的sbt本身,这个sbt的版本通过项目下的project/build.properties控制。
sbt sbtVersion // 在所在项目根目录中运行
因此一个sbt-launcher可以启动不同版本的sbt
库依赖的位置
sbt的库依赖分为托管依赖和非托管依赖。
大多数人会用托管依赖而不是非托管依赖,但是非托管依赖在起步阶段会简单很多,托管依赖只需要将jar文件放在 lib文件夹下,然后它们将会被添加到项目的classpath中。
sbt使用Apache Ivy来实现托管依赖,MAC下这些依赖被放置在/User/[用户名]/.ivy2/cache/
中
为sbt设置代理
terminal:shadowsocks -> 复制终端代理命令(command+c) -> 终端中粘贴
IDEA:setting - build - sbt - vm parms:
-DhttpProxyHost=192.168.31.52
-DhttpProxyPort=1087
-DhttpsProxyHost=192.168.31.52
-DhttpsProxyPort=1087
IDEA导入sbt项目
Open/Import -> 选择build.sbt文件 -> open as a project
.sbt构建定义
.sbt并非是一个完整的scala文件,而是一种DLS(Domain Specific Language, 领域特定语言),其通过key-map的方式建立有向图来描述构建的定义,另外在不同的上下文(scope)下,可能有不同的定义,详情请参见sbt-scala的官方教程