Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ANT创建war文件时,Jar被复制了两次_Java_Ant_Jar - Fatal编程技术网

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

Java 从ANT创建war文件时,Jar被复制了两次,java,ant,jar,Java,Ant,Jar,我是ANT的新手,正在尝试一个简单的ANT脚本来创建我的项目的.war文件。 这是我的脚本 当我运行这个脚本时,一切正常,但是WebContent/WEB-INF/lib中的.jar文件在.war文件中复制了两次 <?xml version="1.0" ?> <project name="AutoComplete"> <path id="compile.classpath"> <fileset dir="WebContent/W

我是ANT的新手,正在尝试一个简单的ANT脚本来创建我的项目的
.war
文件。
这是我的脚本
当我运行这个脚本时,一切正常,但是
WebContent/WEB-INF/lib
中的
.jar
文件在
.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>

如果我犯了什么错误,请告诉我


谢谢。

您的
构建。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>

第一个嵌套的
将所有文件从
WebContent
拉入WAR的根目录。然后第二行明确指出,
WebContent/WEB-INF/lib
中的所有内容都应被视为一个库(并因此复制到战争内部的
WEB-INF/lib


删除其中一行应该意味着LIB被复制一次-如果您确实希望WebContent中的所有内容都像WAR中一样被复制,您可以删除
行。

谢谢!也解决了我的问题,也帮了我。谢谢你的简明解释!