在Play Framework 2.3.0(Java)中的build.sbt中定义JAVA_OPTS

时间:2014-06-30 15:26:32

标签: java playframework sbt playframework-2.3 typesafe-activator

我正在尝试在build.scala中定义JAVA_OPTS,以便为运行和测试任务指定调试端口和配置文件,但它不起作用。我启动activator,然后runtest。 这是我的build.sbt:

name := "machinchose"

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs
)

Keys.fork in run := true

javaOptions in run ++= Seq(
    "-Xdebug",
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9997",
    "-Dconfig.file=conf/developpement.conf",
    "-Xms128m",
    "-Xmx1024m"
)

Keys.fork in Test := true

javaOptions in Test ++= Seq(
    "-Xdebug",
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9997",
    "-Dconfig.file=conf/test.conf",
    "-Xms128m",
    "-Xmx1024m"
)

我搞砸了什么?谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

Play并不真正支持fork in run;它可能只是忽略了那个设置。那么你的javaOptions将无效,因为没有新的JVM。您需要做的是使用这些选项启动激活器(或sbt)本身,或者设置其中一个环境变量JAVA_OPTSSBT_OPTSACTIVATOR_OPTS。还有一个-jvm-debug激活器来添加调试器。

答案 1 :(得分:0)

启动控制台时,您可以要求Play启动JPDA调试端口。然后,您可以使用Java调试器进行连接。使用play debug命令执行此操作:

$ play debug

当JPDA端口可用时,JVM将在引导期间记录此行:

在地址:9999

侦听传输dt_socket
Note: Using play debug the JPDA socket will be opened on port 9999. You can also set the JPDA_PORT environment variable yourself using set JPDA_PORT=1234.

答案 2 :(得分:0)

启动Activator并进行调试

activator -jvm-debug 9999