2012-10-07 33 views
6

我要遷移Maven項目播放2/SBT:源測試/資源目錄會被編譯在播放2

我在Maven項目,我搬到了test/resources/有用於測試一些資源src/test/resources在Play項目中(感謝Schleichardt的his answer on Stackoverflow)。

這適用於普通文件(文本,二進制數據...),但現在我在test/resources/目錄中也存在Java源文件的問題(我必須在我的項目中測試Java解析器中不同的java源文件)。當我打電話test時,這些文件也將被編譯,所以我得到錯誤。

如何防止test/resources/中的文件將從Play/sbt編譯?

+0

這將有助於改變文件名?例如MyClass.java到MyClass.txt? – Schleichardt

+0

是的,但這些資源目錄中有數百個Java文件。所以也許有更好的解決方案? – Sonson123

+2

它可能會幫助http://stackoverflow.com/questions/7371802/sbt-to-exclude-source-directory –

回答

8

由於您的測試資源目錄位於編譯java源代碼的目錄中,因此您可以移動測試資源文件夾。添加到您的設置:

resourceDirectory in Test <<= (baseDirectory) apply {(baseDir: File) => baseDir/"testResources"} 

例如,在項目/ Build.scala:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
    resourceDirectory in Test <<= (baseDirectory) apply {(baseDir: File) => baseDir/"testResources"} 
) 

控制你在控制檯與變化:

play "show test:resource-directory" 
+0

再次感謝您的詳細解答,這最後也適用於源文件。 – Sonson123

+0

經過此配置和eclipsify命令後,eclipse將不會看到「testResources」作爲classpath的路徑。我們接下來應該做什麼? – raisercostin

2

如果你想添加測試 - 您應該通過將以下內容添加到您的PlayProject中來修改項目/ Build.scala ....。設置(

不要忘記在這些行之間留下空行。 不要忘記聲明來蝕刻源文件夾。 你也將需要PlayProject線

import com.typesafe.sbteclipse.core.EclipsePlugin._ 

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(defaultScalaSettings:_*).settings(

    ,resourceDirectory in Test <<= baseDirectory(_/"test-resources") 

    ,EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource 

) 

在此之後才添加導入,你可以做

play test 
play test-only xxx.yyy.zzz.TheTest 
play eclipsify 
+0

我仍然遇到一些資源問題,當我從Eclipse運行時找不到資源,但我認爲這是向我提供正常工作eclipse解決方案的一個步驟。 – Sonson123