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