2009-08-18 177 views

回答

21

對於一個快速演示,你可以克隆或下載我所做的here

從頭

克隆的SBT-的AppEngine-插件簡約sbt-appengine-plugin例如從GitHub

cd mystuff 
git clone git://github.com/Yasushi/sbt-appengine-plugin.git 
cd sbt-appengine-plugin 
sbt 

發佈本地插件,讓你可以在自己的項目中使用

publish-local 
exit 

創建一個目錄,新項目

cd .. 
mkdir sbt-appengine-plugin-test 
cd sbt-appengine-plugin-test 
sbt 

配置新項目

Project does not exist, create new project? (y/N/s) y 
Name: sbt-appengine-plugin-test 
Organization: com.example 
Version [1.0]: 
Scala version [2.7.7]: 2.8.0.Beta1 
sbt version [0.7.3]: 
exit 

泰爾SBT有關該插件要使用

mkdir project/build 
mkdir project/plugins 
nano project/build/project.scala 

項目。斯卡拉

import sbt._ 

class AppengineTestProject(info: ProjectInfo) extends AppengineProject(info) 

nano project/plugins/plugins.scala 

plugins.scala

import sbt._ 

class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    val a = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "1.1-SNAPSHOT" 
} 

添加一個非常簡單的servlet

mkdir -p src/main/scala/com/example 
nano -w src/main/scala/com/example/HelloWorld.scala 

HelloWorld.scala

package com.example; 

import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse} 

class HelloWorld extends HttpServlet { 
    override def doGet(request: HttpServletRequest, response: HttpServletResponse$ 
    response.setContentType("text/plain") 
    response.getWriter.println("Hello, world") 
    } 
} 

添加一些配置文件

mkdir -p src/main/webapp/WEB-INF 
nano -w src/main/WEB-INF/web.xml 

的web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app 
    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/xm$ 
    version="2.5"> 
    <display-name>sbt-appengine-plugin usage example</display-name> 
     <servlet> 
    <servlet-name>helloworld</servlet-name> 
    <servlet-class>com.example.HelloWorld</servlet-class> 
    </servlet> 
     <servlet-mapping> 
    <servlet-name>helloworld</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 


nano -w src/main/WEB-INF/appengine-web.xml 

AppEngine上的Web。XML

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
<!-- Replace this with your application id from http://appengine.google.com -$ 
    <application>hello-world</application> 
    <version>1</version> 
</appengine-web-app> 

最後運行SBT並啓動項目

sbt 

update 
dev-appserver-start 

瀏覽器指向http://localhost:8080/,你應該看到你好,世界

dev-appserver-stop 

要留意源文件的變化我已經用〜pr做了一些嘗試epare-webapp啓動服務器後,但我沒有得到它正常工作。

+2

在servlet的例子中,你的意思是把美元符號放在開始「覆蓋def doGet」的行上嗎?當然,這意味着一個緊密的支架? – 2010-07-04 13:14:00

+0

您需要使用JRebel特性擴展您的項目才能獲得有關更改的工作。 – alexguev 2011-03-28 23:56:34

+0

不幸的是,這個答案鏈接的Yasushi/sbt-appengine-plugin不再存在。 – Suma 2016-06-15 11:00:43

4

以下是Github上的sbt-appengine-plugin,我正試圖立即開始工作。我會發布任何進展。

+0

的靖/ SBT-的AppEngine-插件從該ANSW聯用Scala編寫呃不再存在。 – Suma 2016-06-15 11:00:46

2

您將通過插件這裏的作者找到一個例子: http://gist.github.com/377611

尤其在插件的配置,1.1-SNAPSHOT(上述)或2.1-快照(在SBT-apppengine提到的設置插件自述文件)沒有工作。

的例子顯示:

import sbt._ 

class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    val appenginePlugin = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "2.0" from "http://github.com/downloads/Yasushi/sbt-appengine-plugin/sbt-appengine-plugin-2.0.jar" 
} 

這爲我工作。

2

下面是使用SBT + AppEngine上的模板項目,可以用來上手:

https://github.com/mtkopone/sbt-scalatra-appengine-template

此外,而不必在本地發佈的SBT-的AppEngine-插件,你可以使用以下Plugins.scala:

import sbt._ 
class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    lazy val appEngine = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "2.1" 
    from "http://cloud.github.com/downloads/Yasushi/sbt-appengine-plugin/sbt-appengine-plugin-2.1.jar" 
} 
2

我寫了說明如何建立一個開發環境,並使用SBT和應用程序引擎的應用程序的示例應用程序。它還包含有關設置JRebel以獲得您夢寐以求的自動重新加載的說明。

http://jeremys-scala-example.appspot.com/

這是SBT 0.7所以它的一點點過時。

2

現在有一個新版本的sbt-appengine插件,它可以在https://github.com/sbt/sbt-appengine的新版本SBT(0.10+)上使用。還有一個簡單的示例應用程序使用它在https://github.com/sbt/sbt-appengine

我只是轉換這是用Eclipse創建了一個項目:

  • 從SRC /爲src /主/移動階階的文件。
  • 如果您有java文件,請將它們從src /移動到src/main/java。
  • 將war /移至src/main/webapp。
  • 如果您有其他文件應該放在WEB-INF/classes中,請將它們放在src/main/webapp/WEB-INF/classes /中。