如何在命令行上给出-jvm-debug时在test中设置fork?

时间:2014-02-12 13:39:26

标签: sbt

如果项目在调试模式下运行,是否有办法有条件地禁用分叉:

sbt -jvm-debug 9999

然后在我的构建中:

fork in Test := { 
  //find a key that lets me know if debugging in set up
  !isDebugging.value
}

2 个答案:

答案 0 :(得分:5)

Specifying flywayUrl through system property in SBT应该有所帮助。

将以下内容添加到build.sbt

lazy val isDebugging = settingKey[Boolean]("true when xdebug is true; false otherwise")

isDebugging := System.getProperty("xdebug") == "true"

fork in Test := !isDebugging.value

执行sbt -Dxdebug=true时,它会为您提供所需内容。

BTW我在SBT源代码中看不到对jvm-debug的引用,但它确实在我用来启动它的shell脚本中。可能是您必须更改sbt-launch-lib.bash以适应设置xdebug时添加-Xdebug的更改。

答案 1 :(得分:2)

Jacek的建议指向了正确的方向,但对我来说无法工作(甚至根本没有?)。 System.getProperty基本上无法检索由sbt的Bash脚本设置的-Xdebug标志 - 当调用System.getProperties时,-Xdebug未列在那里,同样还有任何其他非标准JVM属性(例如-Xmx)。

对我有用的是:

lazy val isDebug = settingKey[Boolean]("true when -Xdebug is set, false otherwise")

isDebug := ManagementFactory.getRuntimeMXBean.getInputArguments.contains("-Xdebug")

fork in Test := !isDebug.value

干杯!