[英]How to include config files in Ant WAR task?
我有一个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
目录? 我究竟做错了什么?
您正在寻找webinf
元素。 有关更多详细信息,请参见ant手册 。
嵌套的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>
您可能要考虑使用zip
ant任务而不是war
。 您可以将所有类/库复制到所需结构的文件夹中,然后将内容压缩到.war文件中。 只要将web.xml放置在战争中的正确位置,它就可以毫无战争地部署。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.