簡體   English   中英

如何在Ant WAR任務中包含配置文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM