2012-10-07 34 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