我正在嘗試從頭開始創建Lift web應用程序並遇到一些困難。我從xsbt-web-plugin version 2.1開始,並設法使用一個簡單的Jetty servlet。然後我試圖整合來自Lift Cookbook的信息。使用xsbt-web-plugin配置Lift:找到主要方法類
這是我的build.sbt
:
organization := "ford.nathaniel"
name := "Lift From Scratch"
version := "0.1-SNAPSHOT"
scalaVersion := "2.11.7"
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"
enablePlugins(JettyPlugin)
libraryDependencies ++= {
val liftVersion = "3.0-M8"
Seq(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"org.eclipse.jetty" % "jetty-webapp" % "9.2.1.v20140609" % "container, test",
"org.eclipse.jetty" % "jetty-plus" % "9.2.1.v20140609" % "container, compile"
)
}
我有一個(一行)project/plugins.sbt
:
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0")
我直接從上述聯食譜解除了Boot.scala
文件並把它放在src/main/scala/bootstrap
,和類似的src/main/webapp/WEB-INF/web.xml
。我可以運行在命令行sbt
,它乾淨加載,但是當我嘗試container:start
...
> container:start
[info] starting server ...
[success] Total time: 0 s, completed Mar 3, 2016 9:52:25 PM
Error: Could not find or load main class
>
我對sbt
是如何打算找到電梯的主類不清楚。我瀏覽了很多舊版本的sbt
配置,這些配置有所不同,因爲早期版本使用早期版本的xsbt插件。 (具體來說,你會看到諸如seq(webSettings :_*)
之類的東西 - 甚至會做什麼?)我最近的版本是jetty-webapp
和jetty-plus
,所以我不認爲這是問題所在。另一方面,這些配置都沒有明確說明Lift如何確定Boot.scala
的位置,而我又不確定如何編寫配置以便知道如何引導框架。
兩個源之間的一個主要區別是,新的碼頭README配置的servlet like this:
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"
enablePlugins(JettyPlugin)
containerLibs in Jetty := Seq("org.eclipse.jetty" % "jetty-runner" % "9.2.1.v20140609" intransitive())
containerMain in Jetty := "org.eclipse.jetty.runner.Runner"
這似乎是配置在碼頭插件中SettingKey,並指向碼頭亞軍揭開序幕servlet的。但是,鑑於我沒有運行標準的servlet,而是通過配置爲指向web.xml
中的Lift應用程序的篩選器,這看起來應該是我應該刪除的東西。
顯然我誤解了一些東西。我如何診斷爲什麼xsbt-web-plugin
沒有拿起Lift框架?看起來好像是無法找到配置,或者我需要使用Jetty來指定web.xml
過濾器。任何人都可以幫助澄清如何診斷這個問題,或者說明兩個庫應該如何一起工作?
如果我沒有記錯,Jetty正在尋找'jetty-web.xml'而不是'web.xml',除非您通過代碼重新配置它。有一陣子了。 –
我認爲這個舊項目就像你需要的那樣在Jetty上運行:https://github。COM/izmailoff/lift_authentication_starter。檢查這裏的xml文件:https://github.com/dahdahm/lift_authentication_starter/tree/master/src/main/webapp/WEB-INF。我不確定它是否仍然編譯,但你可能會發現你需要的。 –
@AlekseyIzmailov如果使用簡單的servlet,我已經確認它可以與'web.xml'一起使用,而不是使用Lift。你有鏈接嗎:'jetty.xml'?它在'xsbt-web-plugin'的文檔中提到,但是作爲'附加組件',所以似乎沒有具體的原因去走這條路。 –