Olá,
Abaixo está um build.xml que utilizo para gerar WAR, note que
o build.xml precisa do build.properties para montar algumas
variáveis.
Arquivo build.properties
war=nomeModulo
eclipse.home=/c:/eclipse/
module=nomeModulo
adminToolPath=
project.dir=…/…/
ejbsrc.dir=ejbsrc
#Diretório onde ficará o arquivo WAR.
deploy.dir=C:/Arquivos de programas/Apache Software Foundation/Tomcat 5.0/webapps
#classes a serem incluídas no classpath
project.path=C:\j2sdk1.4.2_03\lib\tools.jar;C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.0\bin\bootstrap.jar;C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.0\common\lib\servlet-api.jar;C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.0\common\lib\jsp-api.jar;C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.0\shared\lib\mysql-connector-java-3.0.12-production-bin.jar
bin.dir=
Arquivo build.xml
<!-- Fabricio Luis em 17/09/2004 -->
<project name=“webmodulebuilder” default=“deploy” basedir=".">
<!-- seta variaveis globais -->
<property file=“build.properties”/>
<property name=“dist” value="…/…/dist" />
<target name=“init”>
<mkdir dir="${dist}"/>
<copy todir="${dist}">
<fileset dir="${project.dir}">
</fileset>
</copy>
<copy todir="${dist}/${war}/WEB-INF/classes/app">
<fileset dir="${project.dir}/app" />
</copy>
</target>
<target name=“deploy” depends=“init” >
<delete file="${war}.war" failonerror=“false” />
<jar jarfile="${war}.war" basedir="${dist}/${war}"/>
<copy file="${war}.war" todir="${deploy.dir}"/>
<delete file="${war}.war" failonerror=“false” />
<delete dir="${dist}" failonerror=“false” />
</target>
</project>
Uma idéia importante: um arquivo WAR nada mais que um arquivo compactado
com diversos arquivos e diretórios. Mas estes arquivos e diretórios tem uma
estrutura que deve ser respeitada. Existem algumas mudanças dependendo do
servidor de aplicação que você utiliza. Eu utilizo o TOMCAT 5.0.27.
Exemplo bem simplista :
/nomeModulo/
/nomeModulo/index.jsp
/nomeModulo/WEB-INF/
/nomeModulo/WEB-INF/web.xml
/nomeModulo/WEB-INF/classes/ (arquivos *.class)
/nomeModulo/WEB-INF/lib/ (arquivos *.jar)
Você deverá compactar a partir de /nomeModulo para gerar um
nomeModulo.war
Para facilitar ainda mais o trabalho eu utilizo o
eclipse 3.0 (http://www.eclipse.org/)
e o lomboz (http://www.objectlearn.com/index.jsp)
Espero ter ajudado. 
Até mais.
Fabrício Luis
http://www.ce3po.com