【问题标题】:Scalatra without SBT没有 SBT 的 Scalatra
【发布时间】:2013-11-26 00:32:51
【问题描述】:

我正在尝试开始使用 Scalatra,但我遇到了 SBT 的主要问题。说白了就是讨厌。它是 Maven 的 Scala 等价物。它试图接管你项目的每一个方面,以获得一些所谓的好处。另外,它不能很好地与 IDE 集成。那么有没有办法在没有 SBT 的情况下使用 Scalatra?我真的很喜欢 Scalatra 提供的功能,但如果我不能摆脱 SBT,我可能不得不接受一些更简单的东西,比如使用 Jetty 构建我需要的功能。

【问题讨论】:

  • Scalatra 在 servlet 中编译,因此使用 scalac 将其全部编译成 servlet 并部署它完全没有问题,无论是手动还是使用任何类型的工具
  • 查看独立部署的文档(版本依赖页面如下):scalatra.org/guides/2.6/deployment/standalone.html

标签: scalatra


【解决方案1】:

我应该更清楚一点。但昨晚几个小时后,我找到了答案。首先,您需要一个像这样(或类似)的主对象:

object Sandbox {
    def main(args: Array[String]) {
        val server = new Server(3000)
        val context = new WebAppContext()
        context.setServer(server)
        context.setContextPath("/")
        context.setWar("webapp")
        server.setHandler(context)

        try {
            server.start()
            server.join()
        } catch {
            case e: Exception =>
                e.printStackTrace()
                System.exit(-1)
        }
    }
}

那么你需要一个 servlet:

class Test extends ScalatraServlet with ScalateSupport {
    get("/") {
        <html>
            <body>
                Hello World
            </body>
        </html>
    }
}

您的默认包中还需要一个 ScalatraBootstrap 类(必须命名为ScalatraBootstrap.scala

class ScalatraBootstrap extends LifeCycle {
    override def init(context: ServletContext) {
        context.mount(new Test, "/test/*")
    }
}

快完成了。您将需要一个 XML 文件。创建一个webapp/WEB-INF 文件夹并将此web.xml 文件放入其中。

<?xml version="1.0" encoding="UTF-8"?>
<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/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <listener>
        <listener-class>org.scalatra.servlet.ScalatraListener</listener-class>
    </listener>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/img/*</url-pattern>
        <url-pattern>/css/*</url-pattern>
        <url-pattern>/js/*</url-pattern>
        <url-pattern>/assets/*</url-pattern>
    </servlet-mapping>
</web-app>

最后,您需要 JAR 文件。有一个很长的列表,但是有一个相当简单的方法来获取它们。我讨厌 Maven,但我喜欢依赖管理。所以在某处创建一个测试文件夹并在this repo 中下载pom.xml 文件。然后转到pom.xml所在的文件夹并运行mvn dependency:copy-dependencies。从dependencies 文件夹中获取 JAR,一切顺利。没有 Maven,没有 SBT,没有魔法。像往常一样在 IDE 中运行和调试。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2014-12-27
    相关资源
    最近更新 更多