【发布时间】:2014-03-17 02:15:10
【问题描述】:
问题
对于 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 模板之类的东西,了解一下会很有帮助。
【问题讨论】:
-
你看过 xsbt-web-plugin (github.com/earldouglas/xsbt-web-plugin) 吗?这可以满足您的需求。不知道它是否适用于 sbt 0.13。
标签: java scala tomcat web-applications sbt