문제

Google App Engine과 함께 SBT를 설정하려고 한 사람이 있습니까? 소스 변경 후 Development Server Auto Reloading을 사용하는 것을 꿈꿉니다.

도움이 되었습니까?

해결책

빠른 데모를 위해 내가 한 일을 복제하거나 다운로드 할 수 있습니다. 여기.

미니멀리즘 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

플러그인 .cala

import sbt._

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

매우 간단한 서블릿을 추가하십시오

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

소스 파일의 변경 사항을 관찰하기 위해 서버를 시작한 후 ~ repay-webapp로 약간 실험했지만 제대로 작동하지 않았습니다.

다른 팁

여기에 있습니다 SBT-Appengine-Plugin Github에서 나는 지금 일을하려고 노력하고 있습니다. 나는 어떤 진전을 게시 할 것입니다.

플러그인의 저자가 여기에서 찾을 수 있습니다.http://gist.github.com/377611

특히 플러그인 구성에서 1.1-snapshot (위에서 언급) 또는 2.1-snapshot (SBT-Apppengine-Plugin Readme에 언급) 설정은 작동하지 않았습니다.

예제는 다음을 보여줍니다.

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

그리고 이것은 나를 위해 효과가있었습니다.

다음은 시작하는 데 사용할 수있는 SBT + Appengine을 사용하는 템플릿 프로젝트입니다.

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

또한 SBT-Appengine-Plugin을 로컬로 게시하는 대신 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"  
}

개발 환경을 설정하고 SBT 및 App Engine을 사용하여 응용 프로그램을 만드는 방법을 설명하는 예제 응용 프로그램을 작성했습니다. 또한 자동 재 장전을 위해 Jrebel 설정에 대한 지침도 포함되어 있습니다.

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

그것은 SBT 0.7을위한 것이므로 약간 오래된 것입니다.

이제 새로운 버전의 SBT (0.10+)와 함께 작동하는 새로운 버전의 SBT-Appengine 플러그인이 있습니다. https://github.com/sbt/sbt-appengine. 이를 사용하는 사소한 샘플 앱도 있습니다. https://github.com/sbt/sbt-appengine.

방금 Eclipse로 만들어진 프로젝트를 변환했습니다.

  • SCRC/SRC/Main/Scala로 스칼라 파일을 이동하십시오.
  • Java 파일이있는 경우 SRC/SRC/Main/Java로 이동하십시오.
  • 전쟁/를 src/main/webapp으로 이동하십시오.
  • Web-Inf/Classes에서 끝나야하는 다른 파일이있는 경우 SRC/Main/WebApp/Web-Inf/Classes/에 넣으십시오.

Google 검색 에서이 게시물을 찾았습니다. 제공된 모든 예제는 상당히 오래되었으므로 온라인에서 찾은 내용을 기반으로 두 가지 샘플 프로젝트를 만들었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top