【问题标题】:How to set fork in Test when -jvm-debug given on command line?在命令行上给出-jvm-debug时如何在测试中设置fork?
【发布时间】:2014-03-10 20:58:53
【问题描述】:

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

sbt -jvm-debug 9999

然后在我的构建中:

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

【问题讨论】:

    标签: sbt


    【解决方案1】:

    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 时,它会给你你想要的。

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

    【讨论】:

    【解决方案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
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多