如何在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