如果项目在调试模式下运行,是否有办法有条件地禁用分叉:
sbt -jvm-debug 9999
然后在我的构建中:
fork in Test := {
//find a key that lets me know if debugging in set up
!isDebugging.value
}
答案 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
干杯!