我是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>
如果我犯了任何错误,请告诉我。
感谢。
答案 0 :(得分: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>
第一个嵌套<fileset>
将所有文件从WebContent
拉入WAR的根目录。第二行然后明确说明WebContent/WEB-INF/lib
中的所有内容都应该被视为一个库(因此被复制到WAR内的WEB-INF/lib
)。
删除其中一行应该意味着libs被复制一次 - 如果你确实希望将WebContent中的所有内容按原样复制到WAR中,你可以删除<lib>
行。