Ответ 1
Обновление 23.01.2016: scalatra-sbt использует xsbt-web-plugin 2.0.4 и несколько настроек изменены. Здесь вы можете найти документы xsbt-web-plugin (см. Примечание: интеграция для xsbt-web-plugin, sbt-web, докеры и автономные сборки можно найти в https://github.com/scalatra/scalatra-in-action, см. главы09- *).
Для приложения Scalatra это означает:
- используйте
jetty:start
,jetty:stop
вместо контейнера: start, container: stop - включить
JettyPlugin
- используйте новые ключи, например.
containerPort in Jetty := 8090
,target in webappPrepare
,sourceDirectory in webappPrepare
- только на основе спецификации SBT на основе scala: используйте правильный импорт для импорта плагинов и кнопок настройки
Определение .sbt build:
organization := "org.foo"
name := "My build"
version := "0.1.0-SNAPSHOT"
scalaVersion := "2.11.6"
val ScalatraVersion = "2.4.0"
libraryDependencies ++= Seq(
"org.scalatra" %% "scalatra" % ScalatraVersion,
"org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
"com.typesafe" % "config" % "1.2.1",
"ch.qos.logback" % "logback-classic" % "1.1.3" % "runtime",
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided"
)
enablePlugins(JettyPlugin)
containerPort in Jetty := 8090
У определения сборки SBT, основанного на scask, есть немного меньше магии, и нам нужно импортировать плагин и его настройки:
import sbt._
import Keys._
import org.scalatra.sbt._
import com.earldouglas.xwp.JettyPlugin
import com.earldouglas.xwp.JettyPlugin.autoImport._
import com.earldouglas.xwp.ContainerPlugin.autoImport._
Фактическое определение сборки с помощью enablePlugins(JettyPlugin)
и настраиваемого порта:
object MyBuild extends Build {
val Organization = "org.foo"
val Name = "My Build"
val Version = "0.1.0-SNAPSHOT"
val ScalaVersion = "2.11.6"
val ScalatraVersion = "2.4.0"
val mySettings =
ScalatraPlugin.scalatraSettings ++ Seq(
organization := Organization,
name := Name,
version := Version,
scalaVersion := ScalaVersion,
libraryDependencies ++= Seq(
"org.scalatra" %% "scalatra" % ScalatraVersion,
"org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
"com.typesafe" % "config" % "1.2.1",
"ch.qos.logback" % "logback-classic" % "1.1.3" % "runtime",
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided"
),
containerPort in Jetty := 8090
)
lazy val project = Project("chapter09", file("."))
.enablePlugins(JettyPlugin)
.settings(mySettings: _*)
}
Убедитесь, что вы используете импорт:
import com.earldouglas.xsbtwebplugin.PluginKeys._
import com.earldouglas.xsbtwebplugin.WebPlugin._
С этими импортами вы можете использовать правильный ключ и конфигурацию:
port in container.Configuration := 9000
Это выполняется в блоке settings
:
...
lazy val project = Project (
"example",
file("."),
settings = Defaults.defaultSettings ++ ScalatraPlugin.scalatraWithJRebel ++ scalateSettings ++ Seq(
port in container.Configuration := 9000,
organization := Organization,
...
scalatra-sbt основывается на xsbt-web-плагине, настройки которого описаны здесь: https://github.com/JamesEarlDouglas/xsbt-web-plugin/wiki/Settings