Ant - Criação de arquivos WAR

Criar arquivos WAR com Ant é extremamente simples e muito semelhante à tarefa de criação de arquivos JAR. Afinal, o arquivo WAR, como o arquivo JAR, é apenas outro arquivo ZIP.

A tarefa WAR é uma extensão da tarefa JAR, mas tem algumas adições interessantes para manipular o que vai para a pasta WEB-INF / classes e gerar o arquivo web.xml. A tarefa WAR é útil para especificar um layout específico do arquivo WAR.

Como a tarefa WAR é uma extensão da tarefa JAR, todos os atributos da tarefa JAR se aplicam à tarefa WAR.

Sr. Não. Atributos e descrição
1

webxml

Caminho para o arquivo web.xml

2

lib

Um agrupamento para especificar o que vai para a pasta WEB-INF \ lib.

3

classes

Um agrupamento para especificar o que vai para a pasta WEB-INF \ classes.

4

metainf

Especifica as instruções para gerar o arquivo MANIFEST.MF.

Continuando nosso Hello WorldProjeto de aplicativo de fax, vamos adicionar um novo destino para produzir os arquivos jar. Mas antes disso, consideremos a tarefa de guerra. Considere o seguinte exemplo -

<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
   <fileset dir = "${web.dir}/WebContent">
      <include name = "**/*.*"/>
   </fileset>
   
   <lib dir = "thirdpartyjars">
      <exclude name = "portlet.jar"/>
   </lib>
   
   <classes dir = "${build.dir}/web"/>
</war>

Conforme os exemplos anteriores, o web.dir variável refere-se à pasta da web de origem, ou seja, a pasta que contém os arquivos JSP, css, javascript etc.

o build.dirvariável refere-se à pasta de saída - aqui é onde as classes para o pacote WAR podem ser encontradas. Normalmente, as classes serão agrupadas na pasta WEB-INF / classes do arquivo WAR.

Neste exemplo, estamos criando um arquivo war chamado fax.war. O arquivo WEB.XML é obtido na pasta de origem da web. Todos os arquivos da pasta 'WebContent' na web são copiados para o arquivo WAR.

A pasta WEB-INF / lib é preenchida com os arquivos jar da pasta thirdpartyjars. No entanto, estamos excluindo o portlet.jar, pois ele já está presente na pasta lib do servidor de aplicativos. Por fim, estamos copiando todas as classes da pasta web do diretório de compilação e colocando na pasta WEB-INF / classes.

Envolva a tarefa de guerra dentro de um alvo Ant (geralmente pacote) e execute-o. Isso criará o arquivo WAR no local especificado.

É inteiramente possível aninhar os diretores de classes, lib, metainf e webinf para que eles vivam em pastas espalhadas em qualquer lugar na estrutura do projeto. Mas as melhores práticas sugerem que seu projeto da Web deve ter a estrutura de Conteúdo da Web semelhante à estrutura do arquivo WAR. O projeto de Aplicativo de Fax tem sua estrutura delineada usando este princípio básico.

Para executar a tarefa de guerra, envolva-a dentro de um alvo, mais comumente, o alvo de construção ou pacote e execute-os.

<target name = "build-war">
   <war destfile = "fax.war" webxml = "${web.dir}/web.xml">
      <fileset dir = "${web.dir}/WebContent">
         <include name = "**/*.*"/>
      </fileset>
      
      <lib dir = "thirdpartyjars">
         <exclude name = "portlet.jar"/>
      </lib>
      
      <classes dir = "${build.dir}/web"/>
   </war>
</target>

Executar o Ant neste arquivo criará o fax.war arquivo para nós.

O seguinte resultado é o resultado da execução do arquivo Ant -

C:\>ant build-war
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 12.3 seconds

O arquivo fax.war agora é colocado na pasta de saída. O conteúdo do arquivo war será -

fax.war:
   +---jsp             This folder contains the jsp files
   +---css             This folder contains the stylesheet files
   +---js              This folder contains the javascript files
   +---images          This folder contains the image files
   +---META-INF        This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes   This folder contains the compiled classes
      +---lib       Third party libraries and the utility jar files
      WEB.xml       Configuration file that defines the WAR package