使用Build.scala文件时覆盖jetty端口设置

时间:2013-09-25 19:22:53

标签: scala sbt xsbt-web-plugin

我正在将构建从 build.sbt 移动到 Build.scala 文件,并且在使用 xsbt-web时无法覆盖jetty端口设置-plugin 。使用 build.sbt 时,我可以使用:

设置属性
port in container.Configuration := 8081

在我的.scala文件中,我尝试过一些东西但是jetty总是从8080开始,例如在我的 BuildSettings 对象中:

import sbt._
import Keys._
import com.earldouglas.xsbtwebplugin.PluginKeys._
object BuildSettings {
  lazy val settings =  com.earldouglas.xsbtwebplugin.WebPlugin.webSettings ++ seq(
    ...
    port := 8081,
    ...
  ) 
}

我也尝试在 Build.scala 的项目定义中覆盖它:

  lazy val root = Project("test",file("."))
    .settings(settings: _*)
    .settings(port := 8081)

但它总是从8080开始。在这两种情况下,运行show port显示8081。

1 个答案:

答案 0 :(得分:5)

问题是Web插件将其端口设置隐藏在配置中。它允许多个容器具有不同的端口设置。但是,不是从非范围键中拉出端口(就像许多插件一样)。

所以你必须明确地做:

port in:= 8081

在sbt控制台上,如果你在服务器启动任务上执行inspect tree,你可能会看到它依赖于<config>:part设置的某个地方。

我认为默认情况下,您需要:

port in container.Configuration := 8081

如果您使用的是.scala文件,则可能还需要包含Container的文件,即

import com.earldouglas.xsbtwebplugin.WebPlugin.container

我还建议在Web插件上打开一个功能请求,以自动将端口设置委托给Global,并为默认的Web插件指定默认设置。

您可以使用以下两种设置自行模仿:

port in container.Configuration := port in Global

port in Global := 8081

希望有所帮助!