[英]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.