scala – jvm选项未传递给分叉进程
发布时间:2020-12-16 08:52:25 所属栏目:安全 来源:网络整理
导读:根据文档,sbt forked进程应该接收当前进程的jvm设置: 默认情况下,分叉进程使用用于构建的相同Java和Scala版本以及当前进程的工作目录和JVM选项.见:http://www.scala-sbt.org/0.13/docs/Forking.html 然而,对我来说似乎并非如此.进行以下测试: object Test
根据文档,sbt forked进程应该接收当前进程的jvm设置:
默认情况下,分叉进程使用用于构建的相同Java和Scala版本以及当前进程的工作目录和JVM选项.见:http://www.scala-sbt.org/0.13/docs/Forking.html 然而,对我来说似乎并非如此.进行以下测试: object Test { def main(args: Array[String]): Unit = { println("Conf: " + System.getProperty("config.resource")) } } 如果我使用sbt -Dconfig.resource = test.conf运行它,则会打印“Conf:test.conf”.但是一旦我在build.scala中添加了fork:= true,就打印出“Conf:null”.这对我来说意味着jvm选项实际上并未传递给分叉进程.谁能告诉我,我在这里失踪了什么? import sbt._ import Keys._ object Build extends Build { lazy val root = (project in file(".")). settings( fork in run := true ) } 解决方法
SBT文档是正确的,JVM属性确实传递给分叉进程.但是,您需要关注需要手动传递的系统属性.试试这个来传递所有系统属性:
import scala.collection.JavaConversions._ javaOptions in run += { val props = System.getProperties props.stringPropertyNames().toList.map { configKey => s"-D$configKey=${props.getProperty(configKey)}" }.mkString(" ") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |