SBT(简单构建工具):更改构建目标“classes”目录

时间:2014-02-17 16:57:23

标签: java scala tomcat web-applications sbt

问题

对于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模板或其他东西,那将有助于了解。

1 个答案:

答案 0 :(得分:3)

我认为应该是

target := base / "WEB-INF"

classDirectory := base / "WEB-INF" / "classes"