2015-05-29 40 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