google-app-engine - 如何在 Google App Engine 中使用 sbt?

标签 google-app-engine scala sbt

有没有人尝试过设置 sbt 以与 Google App Engine 一起工作?我梦想在源更改后使用开发服务器自动重新加载。

最佳答案

要进行快速演示,您可以克隆或下载我所做的here .

简约sbt-appengine-plugin从头开始的例子

从 GitHub 克隆 sbt-appengine-plugin

 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

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/你应该看到 Hello, world

dev-appserver-stop

为了观察源文件的变化,我在启动服务器后对 ~prepare-webapp 进行了一些试验,但我没有让它正常工作。

关于google-app-engine - 如何在 Google App Engine 中使用 sbt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293491/

相关文章:

斯卡拉 - Spark : How to union all dataframe in loop

Scala 不可变变量和打印

scala - 从 SBT 执行 Gatling 负载测试

java - 将服务帐户(json 文件)位置传递给 application.properties

多种类型时的 Scala 方差

scala - sbt:抑制标准输出中的日志前缀

java - 在 SBT/Play 框架上运行 Kotlin 代码?

java - 如何从 Google App Engine 应用程序运行 Google Dataflow 管道?

python - 在 Google AppEngine (python) 中存储配置的好地方是什么

google-app-engine - 无法访问本地主机上的 API 资源管理器