准备将dist目录转换为.war文件时,创建目录结构的理想方法是什么?
答案 0 :(得分:2)
在更复杂的项目中,我知道在源代码中有一个webapp目录,如下所示:
my-webapp/
my-webapp/WEB-INF/
my-webapp/WEB-INF/web.xml
my-webapp/WEB-INF/lib/
my-webapp/WEB-INF/classes/
my-webapp/WEB-INF/jsp/my.jsp
my-webapp/WEB-INF/tld/my.tld
然后,using Ant,我创建一个临时的暂存目录并使用它来构建战争:
<mkdir dir="${staging.dir}"/>
<copy todir="${staging.dir}">
<fileset dir="${src.dir}/my-webapp" includes="**/*"/>
</copy>
<war destfile="my-webapp.war" webxml="${staging.dir}/WEB-INF/web.xml">
<fileset dir="${staging.dir}" includes="**/*"/>
<classes dir="${build.dir}"/>
<lib dir="${lib.dir}"/>
</war>
但是,如果您的项目更简单(没有JSP,资源等),您可能只能在源中没有定义的webapp目录的情况下离开。您可以在源代码树中将web.xml放在适当的位置,将<war>
任务指向它,并相应地指定类/ lib目录。
关于您在评论中的澄清,Tomcat(以及大多数容器)期望得到类似于以下内容的结构:
my-webapp/WEB-INF/
my-webapp/WEB-INF/lib/ (for jar files)
my-webapp/WEB-INF/classes/ (for class files)
my-webapp/WEB-INF/web.xml (deployment descriptor)
Tomcat文档 section on Deployment 对这些内容也有很好的解释。
值得关注:您放在WEB-INF
下的任何内容都无法直接访问(例如通过网址)。例如:
my-webapp/jsp
中,则可以直接访问它们,例如http://example.com/my-webapp/my.jsp my-webapp/WEB-INF/jsp
中,您将无法通过上一个项目符号中的URL访问它们。您需要提供一种方法来获取它们,例如,通过从Servlet中转发它们。我更喜欢我的JSP文件在WEB-INF中,因为我将它们视为MVC结构中的视图,并让我的控制器(Servlets)决定如何访问和呈现它们。