对于Java Web应用程序,如果您在开发计算机上放置Web服务器所需的类,则可以为您节省每次编译时打包和重新部署Web应用程序的步骤。它还简化了使开发和部署目录结构相同的事情。 Tomcat's Standard Directory Layout是:
WEB-INF/
WEB-INF/classes
WEB-INF/lib
但SBT希望将所有课程都放在:
target/scala-2.10/classes
如何告诉sbt将课程改为WEB-INF/classes
?
到目前为止,我一直在使用SBT进行单元测试,我从WEB-INF
而不是项目的根目录运行它,并且不担心它抛出类的位置,因为测试不需要被部署。我想我可以将SBT包装在一个批处理文件中,该文件将cd转换为WEB-INF,然后cd完成后再回来,但这看起来有点笨拙。
人们如何解决这个问题?我可以在每次构建后删除WEB-INF/classes
然后copy target/scala-2.10/classes
,但这可能会消除SBT提供的增量/最小编译的一些好处。
我不确定这是否是新问题的一部分,但它属于“使用SBT构建Java Web应用程序”所以我将包含它:像log4j,Struts,proxool和Hibernate这样的工具似乎期望在每个构建中将文件(和递归子目录)从src/main/resources
复制到classes
,并且我可以像现在使用Ant构建一样明确地复制它们。但是,如果SBT有一个web-app-defaults,maven-defaults或java-defaults模板或其他东西,那将有助于了解。
答案 0 :(得分:3)
我认为应该是
target := base / "WEB-INF"
或
classDirectory := base / "WEB-INF" / "classes"