Có ai đã cố gắng thiết lập sbt để làm việc với Google App Engine không? Tôi mơ về việc sử dụng máy chủ phát triển tự động tải lại sau khi thay đổi nguồn.Cách sử dụng sbt với Google App Engine?
Trả lời
Để 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.
Đâ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.
Các Yasushi/SBT-appengine-plugin liên kết từ answ này er không còn tồn tại. – Suma
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.
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"
}
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ũ.
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 /.
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
mẫu ứng dụng GAE viết bằng Scala sử dụng Scalatra 2.0.5, Scala 2.10.3 và SBT 0,13 https://github.com/cppexpert/scalatra-google-app-engine-app
mẫu GAE ứng dụng viết bằng Scala sử dụng Unfiltered 0.7, Scala 2.10.3 và SBT 0,13 https://github.com/cppexpert/sample-scala-google-app-engine-app
- 1. Cách sử dụng API Google Drive từ Google App Engine?
- 2. Sử dụng dịch vụ OAuth Python với Google App Engine
- 3. Google-app-engine NDB
- 4. Phát! 2.0 và Google App Engine
- 5. Google App Engine: get_or_create()?
- 6. GeoModel với Google App Engine - truy vấn
- 7. Dịch vụ web với Google App Engine
- 8. NhậpError trên Google App Engine với lxml
- 9. yaml trong Google App Engine với index.html
- 10. TemplateNotFound: index.html với Google App Engine & Jinja2
- 11. Google App Engine trên Silverlight
- 12. web.py trên Google App Engine
- 13. Xóa ứng dụng Google App Engine
- 14. Lỗi ứng dụng Google App Engine 5
- 15. Sử dụng Cốc trên Google App Engine (Django)
- 16. Sử dụng Python NLTK (2.0b5) trên Google App Engine
- 17. Google App Engine | Python | APP.YAML
- 18. appengine_config.py trong Google App Engine
- 19. Cookie sử dụng Python và Google App Engine
- 20. Google App Engine hết giờ?
- 21. Google App Engine hoặc Django?
- 22. Sử dụng MySQL với dev_appserver (Google App Engine) và dịch vụ SQL Google
- 23. Cách sử dụng virtualenv với Google App Engine SDK trên Mac OS X 10.6
- 24. Google App Engine - Caching HTML được tạo
- 25. Hỗ trợ Google App Engine và Django
- 26. Phát triển Jython trên Google App Engine
- 27. Flask vs webapp2 cho Google App Engine
- 28. Người gửi sao chép Google App Engine
- 29. Google App Engine nhanh đến mức nào?
- 30. Chạy Boto trên Google App Engine (GAE)
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? –
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
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