zoukankan      html  css  js  c++  java
  • play framework + sbt入门之环境搭建

    一 sbt的使用

    SBT = (not so) Simple Build Tool,是scala的构建工具,与java的maven地位相同。其设计宗旨是让简单的项目可以简单的配置,而复杂的项目可以复杂的配置。

    sbt使用了ivy,默认将依赖包保存在用户目录.ivy下面,如果觉得默认路径不合适,可以把sbt.boot.properties文件的[boot]和[ivy]目录修改为指定目录,比如ivy-home是cache依赖包路径,打比方可以改为/home/user/.../ivy-home/  或者  F:...ivy-home,然后指定路径下生成的cache目录将具体存储sbt项目依赖包。 

    1 sbt项目目录

    和maven一样,sbt有约定了一个通用的目录结构,使用约定的结构会使后面的工作简单很多。项目配置可以在build.sbt文件里定义,也可以在base/project/build.scala文件里定义,一般情况下build.sbt就已经足够,除非多工程项目或者需要很多特殊定义的项目

    base/  
         build.sbt              //构建配置文件
         /project                 //也是构建配置的一部分
              build.scala         //高级配置,可选
         /src
             /main
             /scala
             /java
             /resources
         /test
             /scala
             /java
             /resources
    
     base代表项目的根目录
    

    2.sbt命令(如果mvn命令)

    sbt有哪些命令可用?输入help命令查询,即会列出一堆可用的命令,比如exit,reload等,不知道某个命令的作用?help 命令名,比如输入help exit显示exit命令的作用。

    列出的命令里并没有compile,test等常用的命令?因为那些不是sbt的命令而是当前工程的task. 输入 tasks命令,就可以看见 compile,test,package等等任务的说明了。

    想查看项目的配置?用show命令,输入show name,看当前项目的名字,输入show libraryDependencies看当前项目依赖的库,libraryDependencies太长记不住?输入lib后按tab键! 交互窗口是有tab提示的!输入help show,你可以看到show命令的作用是显示配置的值,如果show之后跟的是任务,则执行该任务并显示任务执行的结果。 你可以试试show compile看什么结果,如果你不想执行compile,而是想看命令的说明,请用inspect命令,inspect命令比较复杂,执行后输出的结果也比较复杂,具体这个命令的作用是什么请help inspect, 不过得等理解了build definition的含义后才能看懂help说的是什么。。。

    常用的任务则有compile, test, run,package,doc等,请顾名思义或自行help之。另外这些任务常常还有些变种,比如package-doc,package-src等,用tasks命令查看任务的列表,必有一款适合您

    有一个强大的任务不得不特别拎出来说一下:console 
    输入console回车,会在当前会话内启动一个REPL,不要告诉我你不知道REPL是scala解释器的意思。。。就是你在命令行下输入scala回车后进入的那个交互界面。

    强大的是,sbt会加载你的项目依赖的全部jar包和你自己的代码! 你可以在这个解释器里实验你的半成品。 我的模板工程里有一个sample/Account.scala文件,十几行很简单的代码,你可以看一下,然后在console窗口里玩弄Account类和Account伴生对象. 不过别忘了先import sample._

    因为依赖的jar包也都被加载了,所以对于那些你可能还不熟悉的第三方库,你有可以在console里玩个痛快!这功能很给力,谁用谁知道。

    顺便在提一下,sbt命令有3种执行模式: 
    1、交互式,即上文所描述的 
    2、批处理式,即在命令行下输入sbt 命令名来执行,比如sbt compile就会编译代码,而不进入交互模式 
    3、连绵不绝式,在命令名前加上~号,即会进入连绵不绝模式,比如~compile,会编译当前代码,然后监听代码改变,每当你编辑了代码并保存后,sbt就会自动编译代码,~test也一样,当你修改代码后自动编译并运行单元测试。按回车键可退出此模式。

    3.build definition释义

    你前面应该试过show name和show libraryDependencies了吧?show出来的结果就是来自你的build.sbt文件,也就是build definition了。打开build.sbt就可以看到name := “sbt11template” 还有其他的一堆xxx := xxxx,很显然的,这就是个key-value pair, sbt就是读取配置文件并构建一个key-value的map. 但是在build.sbt里面并非key := value, 而是key := expression. 文件里的每一行其实是一句scala语句,不行你可以试试把 
    name := “sbt11template” 改成 
    name := {“sbt11template”.toUpperCase} 
    然后reload, 再show name,你会看到变成大写的SBT11TEMPLATE

    :=是最常用的方法,其作用就是将key设置成expression的值,相同的key如果被多次赋值,则后面的值会覆盖掉前面的值。适用于简单类型的key,比如name,version等。

    其他的常用方法有 
    +=,将值添加进现有值里,适用于集合类型的key,比如libraryDependencies

    ++=,将一个集合值加入当前集合里

    ~= ,这个牛X,你在~=后面写个函数,~=将key的当前值传给你的函数,然后将函数结果作为新值,比如你可以在name := xxx后面再来一句 
    name ~= { _. toUpperCase },一样是把name变成大写

    <<= 将另一个key的值赋给当前key,比如auther <<= name ,这个方法还有个高级用法,你可以组合多个其他key的值,赋给当前key,用文档里的例子

    name <<= (name, organization, version) { (n, o, v) => "project " + n + " from " + o + " version " + v }
    • 1

    还有适用于集合类型的版本 
    <+= 和 <++= 
    这些语法的官方文档在此 
    https://github.com/harrah/xsbt/wiki/Getting-Started-More-About-Settings

    4.

    . 依赖管理

    对于不打算通过官方repository管理的第三方库,在项目目录下建个lib目录,把jar包扔进去就行了。

    希望sbt待为管理的则在build.sbt里用下面的语法加入

    libraryDependencies += groupID % artifactID % revision % configuration
    • 1

    % configuration是可选的,表示某依赖库只在特定配置中需要,比如模板项目里的”org.specs2” %% “specs2” % “1.7.1” % “test” 是单元测试框架,只在测试时需要。

    如果你视力好,会看到其中有个 %%,而不是一个%,这表示要求sbt寻找用当前你配置的scala版本编译出来的jar包,这是因为scala不同版本编译出来的结果会不兼容(悲剧),希望以后scala社区会解决这不兼容的问题。。。

    对于依赖的java语言写的库的jar包,就没这问题了,比如libraryDependencies += “org.slf4j” % “slf4j-api” % “1.6.4” 就不需要%%了

    配置好依赖后,运行sbt update,sbt会自动到maven库和scala官方库里去找这些jar包并下载到你的用户目录的.ivy2目录里面,如果你不同的项目用了相同的库,则sbt下载一次就够了。

    如果你希望sbt从你自己配置的repository里下载,使用这个语法:

    resolvers += name at location
    • 1

    比如

    resolvers += "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
    • 1

    所有的一切都是通过key类配置的,key 的列表在http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html 

    二 play的使用

    1 .sbt的下载安装(略)

    2. paly framework的安装

    其实根本不用安装,建项目也只是直接从对应的模板开始

    如果idea是Ultimate收费版的,什么都不用做,可以直接建play2项目

    如果是社区版,那就没办法了,只能用导入的方式

    (1)创建项目,依赖与g8模板

    Java seed template

    sbt new playframework/play-java-seed.g8

    Scala seed template

    sbt new playframework/play-scala-seed.g8

    (2)现在可以输入 项目名、组织名、Scala 版本、Play 版本、SBT 版本:

    (3)试着运行这个项目, sbt run直接运行

    或者sbt进入命令行环境,再输入run

    (4)idea import这个项目,利用build sbt导入

    (5)等待sbt相关依赖加载完成

    (6)sbt shell 中运行sbt run 或者sbt console中运行 sbt run

    即可用浏览器打开http://localhost:9090 看到welcome to play

    (7)编译命令用compile,测试命令用test

  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/linjiaqin/p/11058408.html
Copyright © 2011-2022 走看看