我是 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/