• 新建sbt项目


    原文地址:http://my.oschina.net/jingxing05/blog/287056

    新建sbt项目

    sbt没有新建project生成基本目录的功能  没有类似 sbt init的功能

    sbt支持的目录结构,可以手动创建,这不费什么事,也可采用从其他标准sbt项目拷贝


    |-- build.sbt         主构建文件 
    |—lib                   第三方jar包 
    |—project            下有另一个可编程的Build.scala构建文件可实现高级复杂功能 
    |-- src 
    | |-- main 
    | | |-- java 
    | | |-- resources 
    | | |-- scala 
    | |-- test 
    | |-- java 
    | |-- resources 
    | |-- scala 
    |—target           可选

    也可以使用这个工具 Giter8

    惯例:build.sbt定义主要简单的配置,对于构建逻辑放到project下的.scala文件中,用于更复杂定义和共享代码

    build.sbt文件

    与 build.xml    build.gradle  pom.xml   文件一样是主构建文件

    build.sbt文件包含项目的大部分设置, 注意某项配置使用    空 行   来分隔的

    本质上该文件是scala  Seq[Settings[_]]  的一个实例,每一行代表一个Setting[_]  ,而Setting是一个键值对  key := value ,多个键值对之间用 空行 分隔

    sbt文件中不允许出现顶层object和class

    key 的类型有: SettingKey[T]  TaskKey[T]  InputKey[T]  ,  := 是 这个 key的方法, 返回 一个 Setting[T] 对象

    taskkey依赖Settingkey    Settingkey不能依赖taskkey。因为settingkey只解析一次, 而taskkey可执行多次

    更改sbt运行日志级别

    logLevel := Level.Debug|Info|Warning|Error

    使用sbt插件

    在project/plugins.sbt中添加所需要的插件:

    resolvers += Resolver.url("artifactory", 
    url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.10.0")

     

    基本构建信息

    name := "BasicProjectWithScalaTest"  项目名称


    version := "1.0"   项目版本 这个会添加到jar包名后


    scalaVersion := "2.11.1"    使用的 scala的版本

     

    使用不同的Ivy仓库,提速

    使用Seq为resolvers添加,形如:

    ?
    1
    2
    3
    4
    5
    6
    resolvers ++= Seq(
      "OSChina Maven" at "http://maven.oschina.net/content/groups/public/",
      "OSChina Maven thirdparty" at "http://maven.oschina.net/content/repositories/thirdparty/",
      "Typesafe" at "http://repo.typesafe.com/typesafe/releases/",
      "Java.net Maven2 Repository" at "http://download.java.net/maven/2/"
    )

    依赖管理

    可以直接将jar包放到 lib目录下

    scope范围概念 不同环境的依赖

    一个scope中配置值单一,同一个配置 在不同scope的值 可以不同

    sbt提供三种scope维度:

    projects  :每个项目单独配置

    configurations : 运行环境角度  -》 Compile(默认)     Test    Runtime

    tasks

    添加单个依赖

    libraryDependencies += “groupID” % “artifactID” % “revision” % “scope”

    多个依赖

    libraryDependencies ++= Seq( // ++= 是个方法哦,用来叠加Seq对象 
      "com.typesafe.akka" %% "akka-actor" % "2.3.+",    //“groupID” % “artifactID” % “revision” % “scope” 
      "com.typesafe.akka" %% "akka-testkit" % "2.3.+",  //%%表示生成在artifactID之后附带 _scalaVersion 
      "org.scalatest" %% "scalatest" % "2.1.+" % "test", 
      "junit" % "junit" % "4.+" % "test", 
      "com.novocode" % "junit-interface" % "0.+" % "test" 
    )

    Build.scala用来配置multiProjects

    配置入口类

    mainClass in (Compile, packageBin) := Some("com.alvinalexander.Foo")

     

    基本命令

    可以先试试 sbt的基本命令:  

    scala的包名不一定与实际的文件夹名字匹配

    compile 编译 src下和项目根目录下的scala或Java文件  ~ compile会监视文件更改然后立即重新编译

    run命令会自动搜索main方法    

    package-doc打包文档为jar包     

    inspect 查看某项配置  

    doc 生成API文档

    package打包后的jar包 在target scala版本下面,可以使用 jar tvf 查看被打包的文件  scala xxx.jar则直接运行

    update 更新依赖

    test运行所有测试 

    reload 重新加载sbt文件 

    publish 发布到远程仓库  publish-local

    clean 清空target目录

    console 编译当前项目的代码,放到classpath 中,然后启动scala控制台REPL

    last run 查看上次run 错误的 stacktrace


  • 相关阅读:
    mysql-5.7 show engine innodb status 详解
    mysql-5.7 saving and restore buffer pool state 详解
    mysql-5.7 监控innodb buffer pool load 的进度 详解
    python3 functools partial 用于函数的包装器详解
    mysql-5.7 innodb change buffer 详解
    mysqlbackup 重建带有gtid特性的slave
    将python图片转为二进制文本的实例
    nginx: [error] invalid PID number "" in "/run/nginx.pid"
    ubuntu中执行定时任务crontab
    Matplotlib:mpl_toolkits.mplot3d工具包
  • 原文地址:https://www.cnblogs.com/shenlanzifa/p/5288737.html
Copyright © 2020-2023  润新知