sbt建立web項目

###建立目錄 mkdir sbtdemo cd sbtdemo scipio@localhost [04:31:59] [~/sbtdemo]html

###sbt設置項目信息 -> % sbt [info] Set current project to sbtdemo (in build file:/Users/scipio/sbtdemo/)java

set name := "sbt demo" [info] Defining *:name [info] The new value will be used by *:description, *:normalizedName and 6 others. [info] Run last for details. [info] Reapplying settings... [info] Set current project to sbt demo (in build file:/Users/scipio/sbtdemo/) session save [info] Reapplying settings... [info] Set current project to sbt demo (in build file:/Users/scipio/sbtdemo/) exitgit

會自動建立項目project目錄以及build.sbt 注意build.sbt裏頭要用空行分隔github

###添加eclipse支持 在project目錄下建立plugins.sbt文件(若是不存在的話), 而後添加 addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0") sbt eclipse Import.... Navigate to General | Existing Projects into Workspaceweb

###添加idea支持 addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % 「1.5.2") 而後 sbt gen-ideaapi

  • 嚐鮮版sbt-idea resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/ repositories/snapshots/"session

    addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0-SNAPSHOT」)app

###添加web-plugin,以運行在servlet容器上 addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.4.2")eclipse

  • 同時在build.sbt裏頭添加 seq(webSettings :_*)
    libraryDependencies += "org.mortbay.jetty" % "jetty" % "6.1.22" % "container"
    libraryDependencies += "javax.servlet" % "servlet-api" % "2.5" % 「provided"webapp

  • 完整以下: name := "SampleProject"

    organization := "com.samples" version := "1.0" scalaVersion := "2.10.3" seq(webSettings :_*) libraryDependencies += "org.mortbay.jetty" % "jetty" % "6.1.22" % "container" libraryDependencies += "javax.servlet" % "servlet-api" % "2.5" % "provided"

###新建servlet

import javax.servlet.http.HttpServlet
import scala.xml.NodeSeq
import javax.servlet.http._
class SimpleServlet extends HttpServlet{
  override def doGet(req: HttpServletRequest, resp: HttpServletResponse) {
    resp.setContentType("text/html")
    resp.setCharacterEncoding("UTF-8")
    val responseBody: NodeSeq =
      <html><body><h1>hello world from scala!</h1></body></html>
    resp.getWriter.write(responseBody.toString)
  }
}

###在src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>simpleservlet</servlet-name>
        <servlet-class>SimpleServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>simpleservlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

###而後執行

sbt container:start

http://localhost:8080

###打包 sbt package,打包成war

###包括依賴打成一個jar包

  • 在app/project目錄下新建assembly.sbt
  • 而後添加 addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
  • 而後在app目錄下添加assembly.sbt import AssemblyKeys._ assemblySettings

###添加格式化插件 addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.2.0") 每當你運行compile或者test:compile的時候,都會自動格式化

###添加http client封裝 在build.sbt裏頭添加

libraryDependencies += "net.databinder.dispatch" %% "dispatch-core" % 「0.11.0"

scala mock
libraryDependencies +="org.scalamock" %% "scalamock-scalatest-support"
   % "3.0.1" % 「test"



specs2
libraryDependencies +=
   "org.scalamock" %% "scalamock-specs2-support" % "3.0.1" % "test"

jetty7
libraryDependencies ++= Seq(
"org.eclipse.jetty" % "jetty-servlet" % "7.3.0.v20110203" % "container", "org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "test,

container",
"org.eclipse.jetty" % "jetty-server" % "7.3.0.v20110203" % "container"

)
seq(com.github.siasia.WebPlugin.webSettings :_*)
相關文章
相關標籤/搜索