既然决定要在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项目的更多相关文章

  1. idea中使用sbt构建scala项目及依赖

    1.安装scala插件 http://www.cnblogs.com/yrqiang/p/5310700.html 2. 详细了解sbt: http://www.scala-sbt.org/0.13/ ...

  2. sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

  3. Scala 基础(二):sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

  4. 使用SBT构建Scala应用(转自git)

    # 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...

  5. 【原】SBT构建Scala应用

    [转帖] 原文地址:https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown 尊重版权,尊重他人劳动成果,转帖请注明原文 ...

  6. 使用SBT构建Scala应用【转载】

    使用SBT构建Scala应用 SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工 ...

  7. Chisel3-Intellij IDEA中使用sbt构建Chisel项目

    https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw   1. 使用Intellij IDEA创建Scala项目   Chisel项目,就是构建Scala ...

  8. SBT 构建scala eclipse开发

    scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...

  9. Intellij IDEA使用Maven构建Scala项目

    1.安装IDEA的Scala插件       使用自带的在线安装方式较为简单.File--Setting--Plugins--Browse reposities   2.创建项目     File - ...

随机推荐

  1. jQueryEasyUI中DataGrid的height,width,fit,fitColumns属性

    height: 600, //不指定则默认垂直包裹,指定了则固定 width:1200,//不指定则水平100%平铺,指定了则固定 fit:false,//true:高度填充父窗体,忽略height属 ...

  2. BZOJ_1036_[ZJOI2008]_树的统计Conut_(树链剖分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1036 给出一棵树以及各点的权值,对数进行如下三种操作: 1.改变某一节点u的值为t; 2.求节 ...

  3. zabbix3.0配置邮件报警

    我们部署一套监控软件,报警这一块自然不可或缺,接下来我们看看zabbix如何实现邮件报警.   1.编写发送邮件的脚本 zabbix通脚本发送邮件,遵循的传参格式为: 脚本   收件人  标题  邮件 ...

  4. Muduo-Base-TimeStamp类

    Muduo的时间戳类. 主要功能: 能够获取当前的时间 能够将当前的时间以string的形式返回 能够获取两个时间戳类的时间差 能够获取当前精确的时间(微秒级) #ifndef TIMESTAMP_H ...

  5. svn文件提交时强制写注释

    这个操作需要修改版本库中的一个钩子文件,在你创建的版本库中有一个hooks文件夹,初始的时候其中有一个文件叫pre-commit.tmpl 在windows下将其修改为pre-commit.bat,在 ...

  6. Centos6.4 mysql安装与配置

    安装命令: yum install mysql #安装客户端 yum install mysql-server #安装服务器 yum install mysql-devel #安装开发库 安装完成后, ...

  7. Ext.MessageBox的用法

    1.Ext.MessageBox.alert()方法 有四个参数:alert( title , msg , function(){} ,this) 其中title,msg为必选参数,function为 ...

  8. Java---XML的解析(1)-DOM解析

    本章只讲DOM解析.接下来还会学习Dom4j和StAX 解析技术 DOM解析: DOM解析一次将所有的元素全部加载到内存中:如有以下XML文档: <user> <name>Ja ...

  9. leecode Binary Tree Level Order Traversal II java

    做完这道题,只能说基本功很重要,数组中套数组就不会用了,过几天吧1做了,看自己到底等没. https://oj.leetcode.com/problems/binary-tree-level-orde ...

  10. Preferred Java way to ping a HTTP Url for availability

    I need a monitor class that regularly checks whether a given HTTP URL is available. I can take care ...