在Play Framework 2.3.0(Java)中的build.sbt文件中定义JAVA_OPTS是什么意思?

3

我试图在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个回答

3

在运行中,Play框架并不真正支持fork;它可能只是忽略了该设置。因此,您的javaOptions将无法工作,因为没有新的JVM。您需要做的是使用这些选项启动activator(或sbt)本身,或设置其中一个环境变量JAVA_OPTSSBT_OPTSACTIVATOR_OPTS。还有一个-jvm-debug选项可用于activator以添加调试器。


我尝试过这个方法(编写了一个批处理文件来设置JAVA_OPT并启动激活器),但是通过这种方式,使用build.sbt为“test”任务设置javaOptions - 正如文档推荐的那样 - 并没有起作用,无论我是否分叉测试。而且,在Windows上无法使用“-jvm-debug”(我不能使用Linux,唉)。 - Pierre-Yves Le Dévéhat
1
-jvm-debug应该在Windows上运行;您可以尝试使用昨天发布的activator 1.2.3,并在https://github.com/typesafehub/activator/issues?state=open上报告问题,如果它出现故障?确实,_OPTS环境变量无法让您区分运行和测试选项...我不确定如何在play中做到这一点。 - Havoc P

0
您可以要求Play在启动控制台时启动JPDA调试端口。然后您可以使用Java调试器进行连接。使用play debug命令即可实现此功能: $ play debug
当存在JPDA端口时,JVM将在引导期间记录此行:
Listening for transport dt_socket at address: 9999
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.

我使用Play 2.3.0,play debug已经不存在了。 - Pierre-Yves Le Dévéhat

0

使用调试模式启动 Activator

activator -jvm-debug 9999


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接