如何指定要包含在WAR文件中的文件?

时间:2009-11-24 15:57:44

标签: ant build war

我需要创建一个仅包含静态内容文件(gifs,jpgs,html,js等)的WAR文件。我有一个包含所有文件的目录结构,需要通过ANT(1.5.1)构建任务创建WAR文件。现在我只是在ANT任务中有这个:

<war destfile="${output.file}" webxml="WEB-INF/web.xml" basedir="${basedir}">
    <fileset dir="${basedir}/sales" />       
</war>

我想要包含的文件位于C:/ basedir / sales及其子目录中。当我尝试运行此任务时,我得到“一个zip文件不能包含自己”。所以清楚地把那个文件集放在那里是不正确的方法。我不清楚我需要在任务和web.xml文件中添加什么来指定存档中要包含的文件。

1 个答案:

答案 0 :(得分:2)

我认为basedir =“$ {basedir}”正在引发你的问题。另外,我认为编写它的方式将要求web.xml存在于WEB-INF目录中相对于运行ant的位置。

因此,尝试按如下方式创建/WEB-INF/web.xml:

<?xml version="1.0" encoding="utf-8" ?>

<web-app>
</web-app>

然后尝试按如下方式更新/build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="yourproject" basedir="." default="war" xmlns:ivy="antlib:org.apache.ivy.ant">
        <target name="war" description="--> build war file">
                <war destfile="./mywar.war" webxml="WEB-INF/web.xml">
                    <fileset dir="C:/basedir/sales" />
                </war>
        </target>
</project>

然后你应该可以从命令行运行“ant war”,它应该在你当前的目录中创建“mywar.war”。