从ANT创建war文件时,Jar被复制了两次

xyz*_*xyz 0 java ant jar

我是ANT的新手,并尝试使用简单的ANT脚本来创建.war我的项目文件.
这是我的脚本
当我运行此脚本时,一切正常,但.jar文件中存在WebContent/WEB-INF/lib.war文件被复制两次.

<?xml version="1.0" ?>
<project name="AutoComplete">
     <path id="compile.classpath">
        <fileset dir="WebContent/WEB-INF/lib">
            <include name="*.jar"/>
        </fileset>
    </path>

    <target name="init">
        <mkdir dir="build/classes"/>
    </target>

    <target name="compile" depends="init" >
        <javac includeantruntime="false" destdir="build/classes" debug="true" srcdir="src" >
            <classpath refid="compile.classpath"/>
        </javac>
    </target>

    <target name="build.war" depends="compile">
        <war destfile="AutoComplete.war" webxml="WebContent/WEB-INF/web.xml">
            <fileset dir="WebContent"/>
            <lib dir="WebContent/WEB-INF/lib"/>
            <classes dir="build/classes"/>
        </war>
    </target>

    <target name="clean">
        <delete dir="build" />
    </target>

</project>
Run Code Online (Sandbox Code Playgroud)

如果我犯了任何错误,请告诉我.

谢谢.

And*_*yle 9

你的build.war任务看起来是罪魁祸首:

    <war destfile="AutoComplete.war" webxml="WebContent/WEB-INF/web.xml">
        <fileset dir="WebContent"/>
        <lib dir="WebContent/WEB-INF/lib"/>
        <classes dir="build/classes"/>
    </war>
Run Code Online (Sandbox Code Playgroud)

第一个嵌套<fileset>从所有文件中提取WebContent到WAR的根目录.第二行然后明确地说WebContent/WEB-INF/lib应该将所有内容都视为库(并因此复制到WEB-INF/libWAR内部).

删除其中一行应该意味着libs被复制一次 - 如果你确实希望在WebContent中的所有内容都按原样复制到WAR中,你可以删除该<lib>行.

  • 谢谢!也解决了我的问题. (2认同)