2015-05-29 63 views
2

如何在Java中添加resourceDirectory类路径而SBT运行测试?在测试期间更改SBT中的类路径

现在我只有sbt jar。

我需要的是由于依赖通过ClassLoader.getSystemResourceAsStream而不是getClass().getClassLoader().getResource加载资源(火花卡桑德拉连接器EmbeddedCassandra)...

+0

什么是系统类路径? – marios

+0

对于“System Classpath”,我的意思是使用“java -cp ...”或CLASSPATH系统属性(并且使用'System.getProperty(“java.class.path”);'获得'),而不是SBT fullClasspath。 – ch4mp

回答

1

如果你想一个新的文件/文件夹添加到您的Java CLASSPTH你可以添加下面一行在你build.sbt

(fullClasspath in Test) := (fullClasspath in Test).value ++ Seq(Attributed.blank((resourceDirectory in Test).value)) 

这将增加Test配置下由test:resourceDirectory设置给类路径的文件夹。

注:

的fullClasspath任务提供包括依赖关系和项目的产品无论是一类路径。对于测试类路径,这包括项目的主要和测试资源和编译类以及测试的所有依赖关系。

...

fullClasspath是dependencyClasspath的级联和exportedProducts

更多细节可以发现here

+0

这就是我在添加你的建议之后得到的,在尝试之前,我'System.out.println(s“classpath:$ {System.getProperty(”java.class.path“)}”)'不成功)访问测试资源:_classpath:/usr/local/Cellar/sbt/0.13.8/libexec/sbt-launch.jar_ – ch4mp

+0

我不确定'System.getProperty(“java.class.path”)'在SBT中试试show'test:fullClasspath',它会显示资源文件夹已被添加,实际上我一路走来,在'fullClasspath'中添加了一个jar并编译,看它是否被加载并且一切工作正常。 – marios

+0

显示Test中的fullClasspath将显示配置的所有内容以及默认值(测试资源属于o f it)。这实际上是当您执行'getClass.getClassLoader.getResource'时查找资源的地方,而不是当您执行'ClassLoader.getSystemResource'时(在我使用的lib内发生的情况,正如我在我的问题中所述) – ch4mp