使用ant war任务将文件包含在WEB-INF目录中

Cod*_*ber 9 java ant hibernate war java-ee

我正在使用ant构建我的网络应用程序.我确信这很简单,但我无法弄清楚如何告诉ant在WEB-INF目录中创建一个特定的文件夹并将文件复制到它.

我的蚂蚁战争任务看起来像这样:

<target name="warItUp" depends="compile">
    <war destfile="MyApp.war" webxml="${home.dir}\WEB-INF\web.xml">

        <classes dir="${classes.dir}"/>
        <classes file="${src.dir}/hibernate.cfg.xml"/>
        <classes dir="${src.dir}" includes="**/*.hbm.xml"/>

        <!-- Include the PDF files -->
        <fileset dir="${home.dir}/PDFs">
            <include name="**/*.pdf"/>
        </fileset>

        <!-- Include the JSP files -->
        <fileset dir="${home.dir}/JSPs">
            <include name="**/*.jsp"/>
        </fileset>

        <!-- Include the images -->
        <fileset dir="${home.dir}/images">
            <include name="**/*"/>
        </fileset>          
    </war>
Run Code Online (Sandbox Code Playgroud)

所有文件集元素都可以工作,即它们包含war文件根目录中的pdf,jsp和image文件.

但是如果我想在war文件的WEB-INF目录中创建一个子目录并在其中包含文件,我该如何指定?例如,我想在war文件中包含WEB-INF/TagLibraryDescriptors/MyTagLib.tld,或者我想在war文件中创建一个WEB-INF/JSP文件夹并将所有JSP文件复制到它.

谢谢.

Cod*_*ber 15

OP在这里,感谢所有的回复.我发现了另一个解决方案 - 有一个webinf元素可以包含在war任务中.

这会将源JSPs文件夹中的文件复制到war文件中的WEB-INF文件夹中:

<webinf dir="${home.dir}/JSPs" 
includes="**/*.jsp">
</webinf>
Run Code Online (Sandbox Code Playgroud)

而这会将文件从源JSPs文件夹复制到WEB-INF/JSPs文件夹(我的首选):

<webinf dir="${home.dir}" 
includes="/JSPs/**/*.jsp">
</webinf>
Run Code Online (Sandbox Code Playgroud)

我想我会坚持这个解决方案,但感谢你的回复.


Jör*_*ann 6

作为嵌套webinf元素的替代方法,您还可以使用该zipfileset元素,该元素允许您在存档中指定源文件夹和路径前缀:

<zipfileset dir="${home.dir}/JSPs" includes="**/*.jsp" prefix="WEB-INF/JSPs"/>
Run Code Online (Sandbox Code Playgroud)