java - 从 ANT 创建 war 文件时 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/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>

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

谢谢。

最佳答案

您的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>

第一个嵌套<fileset>WebContent 中提取所有文件到 war 的根源。第二行明确指出 WebContent/WEB-INF/lib 中的所有内容应被视为一个库(因此复制到 WAR 内的 WEB-INF/lib)。

删除其中一行应该意味着库会被复制一次 - 如果您确实希望 WebContent 中的所有内容在 WAR 中按原样复制,您只需删除 <lib> 即可。线。

关于java - 从 ANT 创建 war 文件时 Jar 被复制了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6123108/

相关文章:

java - 用于解析的正则表达式出现堆栈溢出错误

java - izpack 和 build.properties

java - ant javac 排除所有未包含的内容

ant - 使用 ant : [java] error(7): cannot find or open file: *. g 从源代码构建 ANTLR v4 时出现问题

java - 如何将多个 Jar 文件组合成一个可交付的 Jar?

java - 在 Java 字符串中添加新行

java - 无法在 Spring Boot 中连接 Postgres

java - @EnableDiscoveryClient spring Boot 服务注册

Java 与 Maven : How to make Module B depend on jar of module A?

java - 自动分析 Eclipse 插件依赖关系