使用SBT构建Scala项目
既然决定要在Scala上下功夫,那就要下的彻底。我们入乡随俗,学一下SBT。sbt使用ivy作为库管理工具。ivy默认把library repository建在user home下面。
安装SBT
在SBT的官网(http://www.scala-sbt.org/)下载相应版本的SBT。

Windows环境下建议配置SBT的环境变量。(windows上搞开发真是越发蛋疼。)具体步骤不说了,就是把sbt/bin目录配置进PATH。


在sbt/bin下有个sbt.bat,查看该bat文件。可以了解到该文件依赖于conf/sbtconfig.txt。
在conf/sbtconfig.txt中添加:
-Dfile.encoding=UTF8 -Dsbt.boot.directory=d:/sbt-repository/boot/ -Dsbt.ivy.home=d:/sbt-repository/
说明:
-Dsbt.boot.directory -Dsbt.ivy.home
这两个是配置sbt.boot目录和ivy.home目录,用于缓存的jar包等信息存放位置。默认情况下jar包等信息存放于user home目录。
另外运行sbt的一下JVM参数也可以在sbtconfig.txt中指定。
SBT命令行环境
在命令行中进入工程目录,输入sbt,进入sbt的命令行。(这里建议进入工程目录再运行sbt命令。)

注意:第一次使用sbt命令,程序会去下载所需要的jar包。整个过程需要很长时间,要耐心等待。当窗口中出现">"提示符,则说明sbt已经成功启动。下载完成后,显示如下图:

sbt命令
帮助命令 help

查看命令的详细帮助文档


显示项目配置 show
show name :查看当前项目的名字。
show libraryDependencies :查看当前项目依赖的库。
使用Scala控制台 console
输入console回车,会在当前会话内启动一个REPL。sbt会加载当前项目依赖的全部jar包和当前的代码。即可以在这个解释器里实验你的半成品。
因为依赖的jar包也都被加载了,所以对于那些你可能还不熟悉的第三方库,你有可以在console里玩个痛快!
运行Scala程序 run
若项目有个对象带有方法(或者对象继承了 App 品质(trait)),那么可以通过输入 run 在 sbt 中运行代码。
在 sbt 发现有多个 main 方法时,它会询问你想执行哪一个。
使用SBT构建项目
在项目目录下创建project目录。

hello-sbt是项目目录。project是其子目录。
在project目录中创建build.properties文件。在文件中写入使用sbt的版本。若本机没有相应的版本,sbt会自动下载需要的版本。(本机使用当前最新sbt版本0.13.9)

在项目目录下,创建build.sbt,填入相应的项目配置

接着在命令行中,进入当前工程,使用sbt命令,当看见尖括号提示符,即表示创建成功。(注:第一次使用sbt需要等待很长时间去下载相应文件。)

将sbt项目导入到Eclipse
在eclipse中使用sbt相应的配置文件,需要安装sbteclipse插件,sbteclipse插件会依据sbt的配置生成eclipse项目需要的文件。
sbteclipse官方地址是 https://github.com/typesafehub/sbteclipse 其中有安装说明。
在工程目录的project目录下创建plugins.sbt,其中添加插件内容。

执行reload命令

接着直接执行eclipse命令,即可生成eclipse项目文件。
在eclipse中导入工程即可:

如果没有创建src目录,手动创建如下目录,然后在重新运行eclipse命令即可。
src/main/scala
src/main/java
src/main/resources
src/test/scala
src/test/scala
src/test/resources
项目导入到Eclipse中显示如下:

若发现src目录下没有resources可以尝试手动创建,也可以在build.sbt中添加如下配置。
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource
总之很简单。
SBT与Scala程序
编写HelloSBT程序。
在src/main/scala中写入HelloSBT程序,生成的eclipse项目如下:

使用sbt编译程序
在sbt命令行下输入compile

使用sbt运行程序
在sbt命令行下输入run

将sbt项目导入到Inetllj IDEA
工程导入Inetllj IDEA,需要选择build.sbt文件,而不是项目文件。Inetllj IDEA会显示对话框。

注意有一些高级选项,可以设置一下。
SBT官网有中文版的文档:http://www.scala-sbt.org/0.13/tutorial/zh-cn/index.html
--------------------------------------更多内容待写--------------------------------------------
使用SBT构建Scala项目的更多相关文章
- idea中使用sbt构建scala项目及依赖
1.安装scala插件 http://www.cnblogs.com/yrqiang/p/5310700.html 2. 详细了解sbt: http://www.scala-sbt.org/0.13/ ...
- sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- Scala 基础(二):sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- 使用SBT构建Scala应用(转自git)
# 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...
- 【原】SBT构建Scala应用
[转帖] 原文地址:https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown 尊重版权,尊重他人劳动成果,转帖请注明原文 ...
- 使用SBT构建Scala应用【转载】
使用SBT构建Scala应用 SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工 ...
- Chisel3-Intellij IDEA中使用sbt构建Chisel项目
https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw 1. 使用Intellij IDEA创建Scala项目 Chisel项目,就是构建Scala ...
- SBT 构建scala eclipse开发
scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...
- Intellij IDEA使用Maven构建Scala项目
1.安装IDEA的Scala插件 使用自带的在线安装方式较为简单.File--Setting--Plugins--Browse reposities 2.创建项目 File - ...
随机推荐
- ruby面向对象class
ruby对象是严格封装的:只能通过定义的方法访问其内部状态.方法使用的成员变量在对象外部不能直接访问,不过可以通过getter.setter等访问器方法(accessor),使他们看起来好像是直接访问 ...
- Lua和Javascript差异对比
Lua模拟器js方案 1.语法级模拟lua与js语言差异 1.1注释 js 为//,lua为--. 1.2变量js利用val来声明全局变量不存在局部变量,lua则不需要直接定位则为全局变量,local ...
- IT传道解惑:心累了就读读
写在开始 学习不是因为缺少时间而是缺少努力 Studies this matter, lacks the time, but is lacks diligently. 只要你想学好,用心去学,肯下功夫 ...
- GDI+编程说明及小结
原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...
- 在服务 ObtainData 实现的协定列表中找不到协定名称 "IMetadataExchange"。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost,以启用对该协定的支持。
第一种解决方法:最暴力的 配置去掉<endpoint address="mex" binding="mexHttpBinding" contract=&q ...
- linux kernel API and google android compile guide
(1)linux kernel API website: http://docs.knobbits.org/local/linux-doc/html/regulator/index.html http ...
- Linux实时将所有输出重定向到文件
Linux的重定向机制十分好用,我们经常需要在服务器上挂起一个服务程序,然后将该程序的所有输出重定向到某个文件,这样即使我们注销了用户,程序依然在linux服务器上运行着. 但是重定向的输出经常无法实 ...
- 水题:HDU 5119 Happy Matt Friends
Matt has N friends. They are playing a game together.Each of Matt's friends has a magic number. In t ...
- HTML5 Canvas核心技术—图形、动画与游戏开发.pdf3
路径与子路径 在某一时刻,canvas之中只能有一条路径存在,Canvas规范称之为“当前路径”(current path),这条路径却可以包含很多子路径(subpath),子路径是由两个或者更多点组 ...
- HW4.15
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...