• 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 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。
  • 相关阅读:
    Linux网卡设置
    Linux虚拟机-----概述(1)
    Redis缓存数据库-----概述(1)
    Spring和Mybatis的集成
    onehot编码解释
    LINUX-CUDA版本所对应的NVIDIA驱动版本号,cuda版本报错的朋友参考一下
    matplotlib画图
    pytorch实现花朵数据集读取
    轻量架构ShuffleNet V2:从理论复杂度到实用设计准则
    CBAM: 卷积块注意模块
  • 原文地址:https://www.cnblogs.com/codingexperience/p/5372617.html
Copyright © 2020-2023  润新知