zip文件不能包含自身 - Ant构建错误

时间:2010-08-04 08:48:29

标签: ant build spring-mvc

使用Ant构建器

构建时,我在以下代码的第一行有错误
<war warfile="${wartemp.dir}/${name}.war" basedir="${wartemp.dir}" webxml="${wartemp.dir}/WEB-INF/web.xml">
            <include name="*"/>
            <include name="scripts/**"/>
            <include name="styles/**"/>
            <include name="images/**"/>
            <include name="WEB-INF/*.*"/>
            <include name="WEB-INF/lib/**"/>
            <include name="WEB-INF/views/**"/>
            <include name="WEB-INF/classes/**"/>
            <include name="WEB-INF/jsp/**"/>
            <include name="WEB-INF/resources/**"/>
            <include name="WEB-INF/spring/**"/>
            <include name="WEB-INF/messages/**"/>
            <include name="WEB-INF/layouts/**"/>
            <exclude name="WEB-INF/web.xml"/>           
            <exclude name="**/.*"/>
        </war>

错误消息是:

“... /WEB-INF/build.xml:67:一个zip文件不能包含自己” 第67行是上面发布的片段的第一行。

我是Spring框架的初学者。我正在使用带有springource tooluite的Spring版本3。如何解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:5)

您的basedir与您发送输出的war文件的目录相同。这本身不是问题,问题是你包括*作为输入,包括输出文件。

要解决此问题,您可以从包含的文件中排除输出文件,例如:

<exclude name="${name}.war"/>

或者您可以将war文件写入不同于您的目录结构,例如:

<mkdir dir="${war.output.dir}" />
<war warfile="${war.output.dir}/${name}.war" ...>

答案 1 :(得分:0)

我想我发现任何“zip-like”Ant任务(zip,jar ......)中的“一个zip文件不能包含自身”问题的另一个原因:

请记住,设置“basedir”属性已经是要包含的第一组文件!您需要明确排除在级别创建的zip文件(使用“excludes”属性。或者,从Ant 1.7开始,使用嵌套的“排除”元素)。

“fileset”嵌套元素是zip任务的另一个“set”。您应该确保将zip“本身”从集合中排除,并使用另一个显式排除。等等...