zoukankan      html  css  js  c++  java
  • Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能.

    SBT官网上给出各平台的安装方法:

    • MAC: 使用homebrew安装 brew install sbt
    • Ubuntu: 使用apt-get安装apt-get install
    • Win: 使用官网上的.msi安装

    sbt可以管理的一个最简单的scala项目可以只有一个.scala文件. 编写一个hello.scala源文件:

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

    在源文件所在目录中输入sbt命令, 进入sbt交互终端:

    $ ls
    hello.scala
    
    $ sbt
    [info] Set current project to hello (in build file:~/test_scala/hello/)
    > run
    [info] Running HelloWorld
    Hello, world!
    [success] Total time: 1 s
    

    或者使用批处理模式执行命令:

    $ sbt run
    > $ sbt run
    [info] Set current project to hello (in build file:~test_scala/hello/)
    [info] Running HelloWorld
    Hello, world!
    [success] Total time: 1 s
    

    标准SBT项目

    虽然sbt可以管理只有一个scala源文件的项目, 但是大多数项目的结构远比这复杂. sbt建议的项目结构:

    root
     |- build.sbt
     |- project
     | |- build.properties
     | |- plugins.sbt
     |- src
     | |- main
     | | |- java
     | | |- scala
     | | |- resources
     | |- test
     | | |- java
     | | |- scala
     | | |- resources
     | |- test
     |- target
    

    src目录下保存着项目源代码, src/main保存项目代码, src/test保存测试用例.target目录用于保存构建项目得到的目标代码.

    sbt将项目根目录下的.sbt文件和project目录下的.scala文件作为构建管理文件.后者编写较为复杂, 但是可以实现一些.sbt无法实现的复杂功能.

    有趣的是project本身也是一个标准的sbt项目, 其下也可以包含另一个project目录对其进行构建.

    build.sbt

    build.sbt中包含以下通用配置:

    name := "hello"      // 项目名称
    
    organization := "xxx.xxx.xxx"  // 组织名称
    
    version := "0.0.1"  // 版本号
    
    scalaVersion := "2.12.1"   // 使用的Scala版本号
    

    name和version属性在项目打包时将作为包名的一部分. organization则是包名的前缀比如org.apache.spark.

    build.sbt中声明依赖:

    resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
    
    libraryDependencies +=
      "com.typesafe.akka" %% "akka-actor" % "2.1.4"
    

    第三方库的作者通常会提供相应的配置, 比如Using Akka with SBT.

    大多数情况下我们可以使用上述这种managed dependencies方式管理依赖, 它们采用的是Apache Ivy管理方式.

    必要的时候可以使用本地jar包作为unmanaged dependencies.

    将jar包放入项目根目录下的CustomLib目录, 然后在build.sbt中添加配置:

    unmanagedBase := baseDirectory.value / "CustomLib"
    

    baseDirectory即为项目根目录.

    完成依赖配置之后, 运行sbt update命令下载并配置依赖库.

    project

    project目录下的配置文件其实并非必须, 这里简介一下:

    • build.properties: 主要用于声明sbt的版本等信息

    • plugins.sbt: 配置sbt插件

    sbt指令

    sbt拥有交互式和批处理式两种执行方式, 在终端中使用sbt命令即可进入sbt交互环境.

    在sbt命令后添加指令即可进入批处理模式:

    $sbt clean compile run package
    

    上文我们提及了runupdate指令, 这里我们介绍一下常用指令:

    • clean: 清除target下生成的文件
    • update根据构建配置更新依赖项
    • compile: 编译项目
    • run <args>: 运行项目
    • console: 打开一个scala终端, 可以在其中引用当前项目的类
    • test: 运行test目录下的所有测试用例
    • package: 将src/main中的所有类打包为jar
    • reload: 重新载入构建配置文件
    • help 显示帮助
  • 相关阅读:
    linux下安装redis 3.2.1
    redis 登入,检查
    断写了一年的博客~~
    前端面试的感想
    http和web缓存
    http请求报文和响应报文(2)
    http请求报头和响应报头(1)
    网络编程(一)
    防恶意解析,禁止用IP访问网站的Apache设置 修改 httpd.conf 实现
    About English Web Site Font
  • 原文地址:https://www.cnblogs.com/Finley/p/6398446.html
Copyright © 2011-2022 走看看