如何在Java中添加resourceDirectory
类路径而SBT运行测试?在测试期间更改SBT中的类路径
现在我只有sbt jar。
我需要的是由于依赖通过ClassLoader.getSystemResourceAsStream
而不是getClass().getClassLoader().getResource
加载资源(火花卡桑德拉连接器EmbeddedCassandra)...
如何在Java中添加resourceDirectory
类路径而SBT运行测试?在测试期间更改SBT中的类路径
现在我只有sbt jar。
我需要的是由于依赖通过ClassLoader.getSystemResourceAsStream
而不是getClass().getClassLoader().getResource
加载资源(火花卡桑德拉连接器EmbeddedCassandra)...
如果你想一个新的文件/文件夹添加到您的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。
这就是我在添加你的建议之后得到的,在尝试之前,我'System.out.println(s“classpath:$ {System.getProperty(”java.class.path“)}”)'不成功)访问测试资源:_classpath:/usr/local/Cellar/sbt/0.13.8/libexec/sbt-launch.jar_ – ch4mp
我不确定'System.getProperty(“java.class.path”)'在SBT中试试show'test:fullClasspath',它会显示资源文件夹已被添加,实际上我一路走来,在'fullClasspath'中添加了一个jar并编译,看它是否被加载并且一切工作正常。 – marios
显示Test中的fullClasspath将显示配置的所有内容以及默认值(测试资源属于o f it)。这实际上是当您执行'getClass.getClassLoader.getResource'时查找资源的地方,而不是当您执行'ClassLoader.getSystemResource'时(在我使用的lib内发生的情况,正如我在我的问题中所述) – ch4mp
什么是系统类路径? – marios
对于“System Classpath”,我的意思是使用“java -cp ...”或CLASSPATH系统属性(并且使用'System.getProperty(“java.class.path”);'获得'),而不是SBT fullClasspath。 – ch4mp