要作scala开发,sbt是绕不过去的一个坎,里面有许多坑,接下来看我怎么一一解决。windows
Q: 首次执行sbt,程序停着不动,是个什么状况?缓存
A: 通常来讲,这就是网络不是很通畅所致使的。简单的方法,换一个地方上网。例如:我发现家里的联通宽带不行,因而我改到星巴克,用电信的免费wifi,结果就搞定了。服务器
Q: 公司里访问Internet须要通过Microsoft ISA代理服务器,windows如何配置SBT1.0之后的版本?网络
A: 简单作法,包括如下2步:dom
下载cntlm,作一个二级代理,避免sbt访问isa proxy须要身份验证的问题。maven
cntlm -d my_domain_name -f -I -l 1119 -u mac proxy.sample.com:8080
修改sbtconfig.txt文件,该文件在%SBT_HOME%\conf\ 下。例如个人文件就在D:\Program Files (x86)\sbt\confide
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1119 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1119
3. 正常执行sbt,应该就能够访问外网了。
Q: 公司里没法访问外网,windows如何配置SBT1.0之后的版本?ui
A: 这个就比较复杂了,涉及到创建代理软件仓库的问题。不过咱们仍是能够尽可能简化一下。scala
代理软件仓库,能够建得很复杂,有一整套管理软件+Web Server,也能够作得很简单,就是利用maven的本地缓存文件目录.m2来提供软件服务。代理
假设本地Maven缓存目录为 d:\users\mac.m2 , 为了使用这个目录为sbt提供服务,须要作如下几步。
-Dsbt.override.build.repos=true #新增这一行,直接致使用户在build.sbt中对repo的设置失效
[repositories] ali: http://maven.aliyun.com/nexus/content/groups/public/ #能够直接使用ali的mvn库,若是可以连得上 maven-local #若是无法用sbt直连,那么用mvn来下载依赖包,而后从mvn的本地缓存(.m2文件夹)获取依赖包 local #这个表示用.ivy2文件夹做为软件仓库
建立项目目录,例如demo-proj,及demo-proj\project,并建立demo-proj\project\build.properties
sbt.version=1.0.2 #这个要求用户使用sbt 1.0.2,若是用0.13的sbt,后面会有问题。
作完以上3步,应该就能够正常使用sbt了。sbt会从.m2文件找各类jar包,若是找不到,就会报错。此时就能够用maven来完善.m2文件里的内容。
补充一下,假设\windowsserver\users\mac.m2可以正常从互联网获取最新的jar包,并且也能够被开发机所访问到,则能够经过robocopy实现两台机器间目录的快速复制。
robocopy \\windowsserver\users\mac\.m2\repository d:\users\mac\.m2\repository /MIR