我有一个Java Web应用程序,我正在使用Ant为我生成WAR文件。这是我的项目结构:
src/main/java/
<Java sources>
src/main/config/
web.xml
mvc-dispatcher-servlet.xml
pages/
home.jsp
cool.jsp
lib/main/
<Libs>
gen/
bin/
dist/
我需要使用以下目录结构生成Java WAR:
myapp.war/
META-INF/
WEB-INF/
web.xml
mvc-dispatcher.xml
pages/
home.jsp
cool.jsp
classes/
<Compiled Java binaries>
lib/
<All lib JARS>
这是我的WAR任务:
<target name="package" depends="compile">
<war destfile="gen/dist/myapp.war" webxml="src/main/config/web.xml"
basedir="gen/bin"
includes="src/main/config">
<classes dir="gen/bin" />
<lib dir="lib/main" />
</war>
</target>
当我运行此目标时,它会生成一个具有以下结构的WAR:
myapp.war/
META-INF/
WEB-INF/
web.xml
classes/
<Compiled Java binaries>
lib/
<All lib JARS>
注意mvc-dispatcher-servlet.xml
和整个pages
目录是如何丢失的?我做错了什么?
答案 0 :(得分:1)
您正在寻找webinf
元素。有关详细信息,请参阅ant manual。
嵌套的webinf元素指定FileSet。包含的所有文件 此文件集将最终位于war文件的WEB-INF目录中。如果 此文件集包含一个名为web.xml的文件,该文件将被忽略 你会收到警告。
使用包含多个用例的以下代码段。
<war destfile="${build.dir}/${ant.project.name}_${version}.war" webxml="${web.dir}/WEB-INF/web.xml">
<webinf dir="${web.dir}/WEB-INF">
<exclude name="web.xml"/>
<exclude name="classes/**"/>
<exclude name="lib/**"/>
<exclude name="flex/services-config.xml"/>
</webinf>
<lib dir="${war.web-inf.dir}/lib"/>
<lib file="${build.dir}/*.jar"/>
<fileset dir="${web.dir}">
<include name="img/*"/>
</fileset>
答案 1 :(得分:0)
您可能需要考虑使用zip
ant任务而不是war
。您可以将所有类/库复制到所需结构中的文件夹中,并将内容压缩为.war文件。只要web.xml在战争中处于正确的位置,就可以毫无问题地部署战争。