4

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

port in container.Configuration := 8081

在我的 .scala 文件中,我尝试了一些东西,但码头总是从 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。

4

1 回答 1

5

问题是 Web 插件将其端口设置隐藏在配置中。它允许具有不同端口设置的多个容器。但是,它不会从非作用域键中提取端口(许多插件也是如此)。

所以你必须明确地做:

端口:= 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

希望有帮助!

于 2013-11-08T15:33:10.120 回答