繁体   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