gpt4 book ai didi

没有 SBT 的 Scalatra

转载 作者:行者123 更新时间:2023-12-02 07:01:21 26 4
gpt4 key购买 nike

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

最佳答案

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

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中的pom.xml文件。 repo 。然后转到 pom.xml 所在的文件夹并运行 mvn dependency:copy-dependencies。从 dependencies 文件夹中获取 JAR,您就可以开始了。没有 Maven,没有 SBT,没有魔法。像往常一样在 IDE 中运行和调试。 :)

关于没有 SBT 的 Scalatra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com