最近学习Scala,不可避免的要用到sbt。爱折腾的我把原本比较简单的事情搞的复杂了,来来回回搞了好久,记录下来,有同样爱折腾的盆友可以参考下。
sbt在windows下如果是默认安装,会在用户目录生成 .ivy2 和 .sbt 2个文件夹,貌似是这2个啦,因为经常装系统的缘故,反正我是不太喜欢装到C盘的。
不装C盘就要改配置啦,怎么改?
首先得安装sbt吧,从http://www.scala-sbt.org/ 下载,直接选择gz包。
解压gz包,我是解压到E:\sbt
在E:\sbt\conf 下新增个文件repo.properties,文件内容如下:
[repositories] local nexus: http://127.0.0.1:8081/nexus/content/groups/public sonatype-snapshots:
修改E:\sbt\conf\sbtconfig.txt,加入3行
-Dsbt.global.base=E:/sbt/.sbt -Dsbt.ivy.home=E:/sbt/.ivy2 -Dsbt.repository.config=E:/sbt/conf/repo.properties
下载jar包我选择从nexus私服下,因为之前maven工程积累了不少jar包,要是从中央仓库下,公司网这每月限500M流量还不让人崩溃啊。
目前为止,都是一切顺利,然后进入E:\sbt\bin目录,执行sbt.bat
开始初始化,然后下载必须的包。。。
突然结束了,执行sbt --version 正常的,但是执行sbt就报错,
Error during sbt execution: No Scala version specified or detected
懒的研究,直接问谷哥度娘,结果没找到类似的问题。不得已自己跟踪日志(日志在E:\sbt\.sbt\boot\update.log)。发现sbt初始化被异常中断了,中断位置是在下载初始化jar包,在中央仓库搜索了下这个包,发现根本原因是这几个依赖包在中央仓库没有,在typesafe的仓库里面。
但是不应该啊,我在nexus里面加了typesafe的仓库
http://repo.typesafe.com/typesafe/ivy-releases
删掉.sbt目录,反复重试都不行。
谷哥度娘都没遇到过类似的问题,只好默认安装了,然后查看日志发现,nexus中是先找中央仓库,然后再找typesafe,于是乎,修改nexus中pubilic虚拟库的查找顺序,把中央仓库放最后。
删掉.sbt目录,重试,ok了。然后根据官网的hello的demo做了一遍,一切ok。
嘿嘿,其实我只是想说,sbt配置nexus仓库的要点——中央仓库放public的最后