Java 播放覆盖 application.conf 中的端口

Java Play overwrites port in application.conf

我想指定 Java Play 在 application.conf 文件中公开其端点的端口 – application.conf 的完整片段,格式取自 Java Play documentation

play.server.http.port = 5511

但是,如果我运行命令

暴露的端口是 9000,不是 5511。

我能够通过 运行ning

实现正确的行为

所以application.conf一定有问题。 如果我尝试以编程方式读取值,比如从控制器读取值,它也会得到错误值 9000。但是,如果我向 application.conf 添加一些人工值,比如 foo = "ABC",它会正确读取该值.


Java播放版本:2.8.15
SBT版本:1.6.2
插件:仅 java 播放

我没有直接的解释,但是如果你把 application.conf 文件放在 http.port 变量而不是直接 play.server.http.port.

Production Configuration page 上的文件中可以找到线索,由

提供

The configurations above are specific to the Akka HTTP and Netty server backend

根据剧本 documentation :

In run mode the HTTP server part of Play starts before the application has been compiled. This means that the HTTP server cannot access the application.conf file when it starts. If you want to override HTTP server settings while using the run command you cannot use the application.conf file

我建议你按照你之前所说的那样做 sbt run -Dhttp.port=5511。如果您担心每次使用 运行 任务传递参数,那么您可以仅在 build.sbt 文件中更改根项目设置一次。不要忘记 sbt reload 以便您的 build.sbt 更改生效。

lazy val root = (project in file(".")).enablePlugins(PlayJava)
   .settings(PlayKeys.playDefaultPort := 5511)

另一种选择:您可以在 build.sbt 文件中添加以下行

PlayKeys.devSettings += "play.server.http.port" -> "8080"