【问题标题】:Overriding jetty port setting when using Build.scala files使用 Build.scala 文件时覆盖码头端口设置
【发布时间】:2013-11-08 23:33:10
【问题描述】:

我正在将构建从 build.sbt 移动到 Build.scala 文件,并且在使用 xsbt-web 时无法覆盖码头端口设置-插件。使用 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。

【问题讨论】:

  • 您是否尝试过在您的 build.sbt 中使用 container.Configuration := 8081 中的端口?
  • 我的项目中没有 build.sbt,我已经完全迁移到 .scala 文件而不是混合配置。
  • 我知道。但你说它有效。那么为什么不尝试以相同的方式将其写入您的 scala 文件中(包括在 container.Configuration 中)?

标签: scala sbt xsbt-web-plugin


【解决方案1】:

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

所以你必须明确地这样做:

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

希望有帮助!

【讨论】:

    猜你喜欢
    • 2015-12-13
    • 2012-12-26
    • 2011-12-04
    • 2013-12-28
    • 2010-11-17
    • 1970-01-01
    • 2018-05-06
    • 2023-03-28
    • 2019-01-02
    相关资源
    最近更新 更多