时间是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

Scala构建工具sbt的配置的更多相关文章

  1. Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...

  2. 深入浅出的webpack构建工具---webpack基本配置(一)

    深入浅出的webpack构建工具---webpack基本配置(一) 阅读目录 一:webpack入门构建: 1. 安装webpack到全局 2. 安装webpack到本项目. 3. 如何使用webpa ...

  3. 基于流的自动化构建工具------gulp (简单配置)

    项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...

  4. 构建工具-----Gradle-----安装配置

    介绍 Gradle 是一款构建工具,继 Ant .Maven 之后的现代构建工具. 下载 Gradle 下面是 Gradle 的官方网站地址: Gradle l Modern Open-Source ...

  5. 构建工具系列一--Travis-cli

    本文地址: http://www.cnblogs.com/blackmanba/articles/continuous-integration-tool-travis-cli.html或者http:/ ...

  6. 构建工具-----Gradle(二)-----myeclipse 10和myeclipse2015安装gradle插件----其他版本的myeclipse类似

    我们需要给myeclipse安装gradle的插件.这样myeclipse就能识别到gradle项目了,直接加载进去即可. 我们先安装配置系统命令行的gradle,挺简单的,下载后配置环境变量即可,详 ...

  7. grunt配置太复杂?发布一个前端构建工具,简单高效,自动跳过未更新的文件

    做前端项目,如果没有一个自动化构建工具,手动处理那简直就是坑爹O(∩_∩)O.于是上网了解了下,grunt用的人不少,功能也挺强大.看了一下grunt的配置(包括gulp),感觉稍显复杂.当时项目结构 ...

  8. 流行得前端构建工具比较,以及gulp配置

    前端现在三足鼎立的构建工具(不算比较老的ant,yeoman),非fis,grunt,gulp莫属了. fis用起来最简单,我打算自己得项目中使用一下fis. 先说一下gulp安装吧. 第一步:安装n ...

  9. Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)

    本文主要讲述了如何如何在Android Studio使用新的Gradle构建工具配置NDK环境,现在把相关的步骤整理出来分享给Android程序员兄弟们,希望给他们在配置NDK环境时带来帮助. 从An ...

随机推荐

  1. linux(2)

  2. PHP防止木马攻击的措施

    防止跳出web目录 只允许你的PHP脚本在web目录里操作,针对Apache,还可以修改httpd.conf文件限制PHP操作路径. 例如:php_admin_value  open_basedir( ...

  3. Python中常用模块二

    一.hashlib   (加密) hashlib:提供摘要算法的模块 1.正常的md5算法 import hashlib # 提供摘要算法的模块 md5 = hashlib.md5() md5.upd ...

  4. ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题

    ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题 摘自:https://blog.csdn.net/aikui0621/article/details/9148997 阅读 ...

  5. 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页

    通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...

  6. Linq学习<三> linq to entity

    之前一直用sql选择出数据放在一个集合中,然后再用Linq或者lambda去操作数据,今天学了Linq to entity 才知道原来linq产生是为了Entity.也就是EDM(实体数据模型) 关于 ...

  7. 升级Ubuntu 12.04下的gcc到4.7

    我们知道C++11标准开始支持类内初始化(in-class initializer),Qt creator编译出现error,不支持这个特性,原因在于,Ubuntu12.04默认的是使用gcc4.6, ...

  8. 深数据 - Deep Data

    暂无中文方面的信息,E文的也非常少,原文连接: A lot of great pieces have been written about the relatively recent surge in ...

  9. python 单双引号交替的json串

    单双引号交替的json串 1.常见的json串,类似于这种{"isSucess":true, "name":"yoyo", "st ...

  10. HTML、CSS、JavaScript拾遗

    1.html元素中,如果有文本存在,当元素大小不足以容纳文本时,文本会进行强制换行.比如说设置页面不出现滚动条,body的overflow为hidden时,或者scroll为no时,span在超过页面 ...