2009-08-18 25 views

Trả lời

21

Để có bản trình diễn nhanh, bạn có thể sao chép hoặc tải xuống những gì tôi đã thực hiện here.

Một Minimalistic sbt-appengine-plugin dụ từ đầu

Clone các SBT-appengine-plugin từ GitHub

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

Xuất bản plugin cục bộ để bạn có thể sử dụng nó trong các dự án của riêng bạn

publish-local 
exit 

Tạo một thư mục cho một dự án mới

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

Cấu hình dự án mới

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 

Hãy nói SBT về các plugin bạn muốn sử dụng

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

dự án. 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" 
} 

Thêm một servlet rất đơn giản

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") 
    } 
} 

Thêm một số file cấu hình hơn

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> 

Và cuối cùng chạy SBT và khởi động dự án

sbt 

update 
dev-appserver-start 

Chỏ trình duyệt web của bạn để http://localhost:8080/ và bạn sẽ thấy Hello, world

dev-appserver-stop 

Để xem cho thay đổi trong tập tin nguồn tôi đã thử nghiệm một chút với ~ pr epare-webapp sau khi khởi động máy chủ, nhưng tôi chưa nhận được nó hoạt động đúng cách.

+2

Trong ví dụ servlet, ý của bạn là đặt dấu đô la trên dòng bắt đầu "ghi đè def doGet"? Chắc chắn, đó có nghĩa là để được một khung gần? –

+0

bạn cần phải mở rộng bạn dự án với đặc điểm JRebel để có được xem cho những thay đổi làm việc. – alexguev

+0

Các Yasushi/sbt-appengine-plugin liên kết từ câu trả lời này không còn tồn tại không may. – Suma

4

Đây là số sbt-appengine-plugin trên Github mà tôi đang cố gắng làm việc ngay bây giờ. Tôi sẽ đăng bất kỳ tiến bộ nào.

+0

Các Yasushi/SBT-appengine-plugin liên kết từ answ này er không còn tồn tại. – Suma

2

Bạn sẽ tìm thấy một ví dụ bởi tác giả của plugin ở đây: http://gist.github.com/377611

Đặc biệt trong cấu hình plugin, các thiết lập của 1,1-SNAPSHOT (nêu trên) hoặc 2.1-SNAPSHOT (được đề cập trong SBT-apppengine -plugin README) không hoạt động.

Ví dụ cho thấy:

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" 
} 

Và điều này làm việc cho tôi.

2

Dưới đây là một dự án mẫu sử dụng SBT + appengine mà có thể được sử dụng để bắt đầu:

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

Ngoài ra, thay vì phải công bố SBT-appengine-plugin tại địa phương, bạn có thể sử dụng sau đây trong 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

Tôi đã viết một ứng dụng ví dụ mô tả cách thiết lập môi trường phát triển và tạo ứng dụng bằng SBT và công cụ ứng dụng. Nó cũng bao gồm các hướng dẫn về thiết lập JRebel để có được tự động tải lại bạn mơ ước.

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

Đó là SBT 0.7 nên nó một chút đã cũ.

2

Hiện tại, phiên bản mới của plugin sbt-appengine hoạt động với các phiên bản mới hơn của SBT (0.10+) tại https://github.com/sbt/sbt-appengine. Ngoài ra còn có một ứng dụng mẫu tầm thường sử dụng nó tại https://github.com/sbt/sbt-appengine.

Tôi chỉ chuyển đổi một dự án mà đã được tạo ra với Eclipse:

  • Move scala tập tin từ src/to src/main/scala.
  • Nếu bạn có tệp java, hãy di chuyển chúng từ src/to src/main/java.
  • Di chuyển chiến tranh/src/main/webapp.
  • Nếu bạn có các tệp khác sẽ kết thúc trong WEB-INF/classes, hãy đặt chúng trong src/main/webapp/WEB-INF/classes /.
1

Tìm thấy bài đăng này trong tìm kiếm của Google.Vì tất cả các ví dụ được cung cấp là khá cũ Tôi tạo ra hai dự án mẫu dựa trên những gì tôi tìm thấy trực tuyến