时间是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. 使对象可以像数组一样foreach循环,要求属性必须是私有的(写个类实现Iterator接口)

    <?php class Test implements Iterator { ,,,,); public function __construct() { } // 重置,将数组内部指针指向第一 ...

  2. pymysql模块使用---Python连接MySQL数据库

    pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...

  3. 专题1-MMU-lesson2-深入剖析地址转化

    1.地址转化总体分析 level one fetch和level two fetch分为一级转换和二级转换. 由上图右边可以看出,首先通过TTB(Translation Table Base)寄存器找 ...

  4. getchar() getch() getche() gets() puts() scanf()的用法及区别

    getchar() putchar(ch) scanf()   头文件stdio.h getch() getche()   头文件conio.h gets() puts()    头文件stdio.h ...

  5. Java反射学习:深入学习Java反射机制

    一.Java反射的理解(反射是研究框架的基础之一) Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的 ...

  6. 编写高质量代码改善C#程序的157个建议——建议4: TryParse比Parse好

    建议4: TryParse比Parse好 如果注意观察除string外的所有基元类型,会发现它们都有两个将字符串转型为本身的方法:Parse和TryParse.以类型double为例,这两个方法最简单 ...

  7. Linq to SQL Like Operator

    As a response for customer's question, I decided to write about using Like Operator in Linq to SQL q ...

  8. 完美解决bootstrap模态框允许拖动后拖出边界的问题

    使用bootstrap3版本 在网上看了很多方法,我觉得jquery-ui的实现方法是最简单有效的,具体实现方法 1.下载并引入jquery-ui插件 2.全局添加模态框允许拖动事件 $(docume ...

  9. 搜索引擎Hoot的源码阅读(提供源码)

    开门见山,最近阅读了一下一款开源引擎的源码,受益良多(学到了一些套路).外加好久没有写博客了(沉迷吃鸡,沉迷想念姑娘),特别开一篇.Hoot 的源码地址, 原理介绍地址.外加我看过之后的注释版本,当然 ...

  10. 函数形参为基类数组,实参为继承类数组,下存在的问题------c++程序设计原理与实践(进阶篇)

    示例: #include<iostream> using namespace std; class A { public: int a; int b; A(int aa=1, int bb ...