Scala构建工具sbt的配置

时间:2022-08-22 06:36:28

时间是17年12月24日。初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾。下面的配置参考了好多篇不同的文章,已经没法一一留下出处了。而且还没有全部验证过。如有侵权,请联系我删除,谢谢。

1. 下载官方的zip包,http://www.scala-sbt.org/download.html。 解压后,修改用户的环境变量path,增加到sbt/bin的路径。

2. 配置repository。在用户默认路径[user]/.sbt下,添加文件repositories,加入依赖仓库的位置,包括公司的Nexus私服。例如下面例子,第一个local是固定的,表示自己本地的缓存,后面每行一个仓库,注意行末不要有多余的空格或tab字符。阿里云的maven仓库在国内是很好的来源。不需要的仓库可以先用#号注释掉。

[repositories]
local
myNexus: http://xxxxxxxxxxx
aliyun: http://maven.aliyun.com/nexus/content/groups/public/

3. 配置Nexus私服credential。参考文章 https://www.jianshu.com/p/9494aecebc8d 。

一般情况我们本地的nexus仓库都是有网关密码的,不能随便访问,因此如果sbt在下载的时候需要指定credential,因为sbt本身是一种类似scala的语言,通常用程序来实现就是在build.sbt加上这么一行:
Credentials.add("Sonatype Nexus Repository Manager", "nexusHostIp", "nexususername", "nexuspassword")
更好的办法是把credential放到一个文件:
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
但是这样需要在所有的工程里边加这么一句,很是麻烦,作为通用的配制,我们可以让他在更基础的文件里边调用,因此最终的方法如下,先把credential放到一个文件,这里我们选择的是~/.sbt/.credentials, 内容如下:
realm=Sonatype Nexus Repository Manager host=teamwork.kmtongji.com user=xxxxx password=xxxxx
接下来我们在sbt配置目录下创建一个公共调用的文件~/.sbt/0.13/plugins/credentials.sbt,内容如下:
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
将调用放到底层加载过程中,因此具体的credentials文件放到哪里不那么重要,重点是调用这行代码,可以隐含的加载默认的credentials
上边只这展示了一个的例子,通过realm来匹配验证的用户名密码,只对http basic authentication有效,如果需要多个realm,应该也可以通过toml的配制方式增加[xxxx]的section区分,并没有测试过,只是猜测。

4. 配置本地缓存位置。默认以“[用户名]/.ivy2”和“[用户名]/.sbt”为本地仓库。修改缓存位置,可以修改sbt的目录下的conf/sbtconfig.txt文件。例如:

-Dfile.encoding=UTF8
-Dsbt.boot.directory=d:/sbt-repository/boot/
-Dsbt.ivy.home=d:/sbt-repository/
-Dsbt.repository.secure=false #是否使用https协议获取依赖信息

5. 配置proxy。因为sbt本身是经过jvm跑的,所以在$JAVA_OPTS环境变量里设置代理是有效的。这里还是使用sbt专门的配置方式,即在conf/sbtconfig.txt文件中增加配置信息。

##如下为代理的配置包括http与https.
-Dhttp.proxyHost=10.18.11.11
-Dhttp.proxyPort=8080
-Dhttp.proxyUser=xx
-Dhttp.proxyPassword=xx -Dhttps.proxyHost=10.18.11.11
-Dhttps.proxyPort=8080
-Dhttps.proxyUser=xx
-Dhttps.proxyPassword=xx

参考:

1. Sbt构建工具常用操作: https://www.jianshu.com/p/9494aecebc8d

2. 使用SBT构建Scala项目:https://www.cnblogs.com/shijiaqi1066/p/5103735.html

3. sbt初次使用配置:http://blog.csdn.net/qq_19648191/article/details/53725875

4. sbt使用及配置: http://blog.csdn.net/zhaorongsheng/article/details/53934542

5. SBT构建开发环境与代理和仓库配置: http://blog.csdn.net/wuliusir/article/details/50587448