zoukankan      html  css  js  c++  java
  • sbt介绍与构建Scala项目

    一、sbt简介

         sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。

        主要特性:

    1. 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
    2. 使用Scala编写的DSL(领域特定语言)构建描述
    3. 使用Ivy作为库管理工具
    4. 持续编译、测试和部署
    5. 整合scala解释器快速迭代和调试
    6. 支持Java与Scala混合的项目

    二、sbt安装

    在sbt官网下载,这里我是下载的sbt-0.13.11.zip,下载后加压到自己定义的文件夹,然后将解压目录的bin目录加入PATH环境

    Linux环境,使用`sudo vim /etc/profile`打开配置文件,添加下面的命令

    export SBT_HOME=/opt/sbt
    export path=path:$SBT_HOME/bin

    Windows环境,打开高级系统设置,在环境变量中添加系统变量

    SBT_HOME  =>   D:sbt

    并加入path路径,

    path=> path;%SBT_HOME%in

    安装完成后,检验是否安装成功。

    使用sbt命令,该命令会执行一段时间,下载jar包,加载插件,最后查看是否进行交互界面,如下图所示

    C:Users	est>sbt
    [info] Loading global plugins from C:Users	est.sbt0.13plugins
    [info] Set current project to test(in build file:/C:/Users/test/)
    >

    sbt的简单配置

    配置ivy目录

    可以对sbt进行配置,能够配置ivy的文件目录,ivy是sbt的默认管理项目依赖工具,它默认是在user home下建立library repository,但用户可以配置ivy的library local repository。

    修改sbt配置文件: [sbt安装目录]/conf/sbtconfig.txt,在配置文件中添加一行

    -Dsbt.ivy.home=[你自己挑选的目录]/repository

    配置库

    感觉sbt运行时会从maven官网下载大量的jar包,可能会非常缓慢,可以添加国内的maven库,从而能够加快运行速度,在”~/.sbt”下创建repositories文件,添加下面的内容:

    [repositories]
    local                         # 本地ivy库
    maven-local: file://~/.m2/repository       # 本地Maven库  osc: http://maven.oschina.net/content/groups/public/ #开源中国的maven库,用于加快速度 typesafe: http://repo.typesafe.com/typesafe/ivy-releases/
    , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sonatype-oss-releases maven-central sonatype-oss-snapshots

    配置插件

    sbt有自己的插件,这里介绍能够生成eclipse目录的插件:sbteclipse插件https://github.com/typesafehub/sbteclipse

    添加sbteclipse插件可以通过两种方式添加:

    • 配置全局文件:~/.sbt/0.13/plugins/plugins.sbt
    • 配置项目文件: PROJECT_DIR/project/plugins.sbt

    在其中一个文件添加一行

    addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")

    安装sbteclipse插件后可以在sbt交互界面使用`eclipse`命令生成eclipse项目

    三、sbt构建Scala项目

    简单构建Scala项目

    创建文件SimpleProject/hw.scala

    object Hi{
      def main(args: Array[String]) = println("Hello world!")
    }

    运行

    D:MyCodeScalaSimpleProject>sbt
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
    [info] Loading global plugins from C:Users	est.sbt0.13plugins
    [info] Set current project to hello (in build file:/D:/MyCode/Scala/SimpleProject/)
    > run
    [info] Updating {file:/D:/MyCode/Scala/SimpleProject/}root...
    [info] Resolving org.fusesource.jansi#jansi;1.4 ...
    [info] Done updating.
    [info] Compiling 1 Scala source to D:MyCodeScalaBuildProject	argetscala-2.10classes...
    [info] Running Hi
    Hello world!
    [success] Total time: 43 s, completed 2016-4-9 20:16:21

    构建Scala完整项目

    sbt项目目录与Maven项目目录类似,创建下面的目录

    ├── src
    │  ├── main
    │  │  ├── java
    │  │  ├── resources
    │  │  └── scala
    │  ├── test
    │  │  ├── java
    │  │  ├── resources
    │  │  └── scala
    ├── build.sbt
    ├── project
    │  ├── build.properties
    │  ├── plugins.sbt

    其中bulid.sbt为构建定义,project目录是你的工程内另一个工程的项目,它知道如何构建你的工程,即project项目为元构建,相关文档为http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html

    简单的bulid.sbt文件

    name := "hello"      // 项目名称
    
    organization := "xxx.xxx.xxx"  // 组织名称
    
    version := "0.0.1"  // 版本号
    
    scalaVersion := "2.10.6"   // 使用的Scala版本号
    
    // 添加项目依赖
    libraryDependencies += "ch.qos.logback" % "logback-core" % "1.0.0"
    
    libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.0"
    
    // 或者
    
    libraryDependencies ++= Seq(
                                "ch.qos.logback" % "logback-core" % "1.0.0",
                                "ch.qos.logback" % "logback-classic" % "1.0.0",
                                ...
                                )
    
    // 添加测试代码编译或者运行期间使用的依赖
    libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.8" % "test")

    创建项目目录并添加配置文件完成后,生成eclipse项目:在项目基目录下运行下列命令

    sbt eclipse

    通过上面的命令能够生成eclipse目录,使用eclipse导入项目,即可开始开发。

    四、sbt的交互模式

    在项目目录下运行sbt命令进行交互模式

    sbt

    在交互模式中能够运行常见的命令,例如,进行compile:

    >  compile

    其它常见命令

    clean 删除所有生成的文件 (在 target 目录下)。
    compile 编译源文件(在 src/main/scalasrc/main/java 目录下)。
    test 编译和运行所有测试。
    console 进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
    run <参数>* 在和 sbt 所处的同一个虚拟机上执行项目的 main class。
    package src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
    help <命令> 显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
    reload 重新加载构建定义(build.sbtproject/*.scalaproject/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。
  • 相关阅读:
    基于Metaweblog API 接口一键发布到国内外主流博客平台
    uva144 Student Grants
    Uva 10452
    Uva 439 Knight Moves
    Uva 352 The Seasonal War
    switch语句
    java——基础知识
    我的lua学习2
    codeforces 431 D. Random Task 组合数学
    codeforces 285 D. Permutation Sum 状压 dfs打表
  • 原文地址:https://www.cnblogs.com/codingexperience/p/5372617.html
Copyright © 2011-2022 走看看