运行时的真实SBT类路径

时间:2014-10-24 22:16:32

标签: scala sbt classpath

我有一些测试用例需要查看类路径以提取那里的某些文件/目录的路径。这在IDE中工作正常。

问题是,在运行SBT测试时,Properties.javaClassPath会给我/usr/share/sbt-launcher-packaging/bin/sbt-launch.jar

当我运行show test:dependency-classpath时,类路径很好。有没有办法从运行的Scala / Java程序中获取该信息?或者有没有办法将它扔进系统属性或环境变量?

2 个答案:

答案 0 :(得分:2)

默认情况下,测试是在SBT进程内部运行的,所以类路径看起来就像你启动sbt时那样(我想sbt做了一些trixery动态加载测试的类,不确定)。做你想做的事情的一种方法是在分叉的jvm中运行你的测试,这样sbt将启动一个新的jvm来运行测试套件,并且应该有预期的类路径:

fork in Test := true

答案 1 :(得分:0)

我一直在努力了解EmbeddedCassandra如何在spark-cassandra-connector项目中工作,该项目使用类路径来启动和控制Cassandra实例。以下是从其配置中获取正确类路径的行。

(compile in IntegrationTest) <<= (compile in Test, compile in IntegrationTest) map { (_, c) => c }

可在此处找到整个来源:https://github.com/datastax/spark-cassandra-connector/blob/master/project/Settings.scala

有关<<=运营商的信息,请访问:http://www.scala-sbt.org/0.12.2/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values。我知道这不是当前版本的sbt,但定义仍然有效。