Arquivo de Códigos - Página Inicial
Códigos-fonte
» Boletos Bancários
» Calendário de Eventos
Linguagens
» ActionScript
» Adobe AIR
» Adobe Flex
» AJAX
» C
» C#
» C++
» CSS
» Delphi
» DHTML - Dynamic HTML
» HTML/XHTML
» Java
» JavaFX
» JavaScript
» Java Servlets
» JSP - Java Server Pages
» Perl
» PHP
» PHP-GTK
» Python
» Ruby
» Tcl/Tk
» VB.NET
Bancos de Dados
» IBM DB2
» MySQL
Frameworks
» CodeIgniter
» jQuery
» JSF - Java Server Faces
» Qt
» Ruby On Rails
» Struts
» Struts 2
» wxWidgets
» Zend Framework
Container/Servidor
» Apache Tomcat
» Apache Web Server
Ferramentas
» Apache Ant
» iTextSharp (iText#)
Referências
» CSS1 e CSS2
» JavaScript
Serviços On-Line
» Qual é meu IP?
» Tabela Cores HTML I
» Tabela Cores HTML II
» Lista de Mime Types
» Códigos Teclas Virtuais
Usuários On-Line
Visitantes: 15
PHP
O que há de novo no PHP 5?
40 dicas e truques sobre como trabalhar com datas e horas em PHP
60 dicas e truques sobre como trabalhar com strings e caracteres em PHP
PHP e a Orientação a Objetos - POO (Curso Completo)

DHTML
Curso completo de DHTML para iniciantes

CSS
Como definir uma imagem de fundo fixa na página
Definindo uma imagem de fundo para botões HTML
Você está aqui: Inicio -> Tutoriais -> Apache Ant
Empacotando aplicações web com o uso da tarefa War
Finalmente chegamos ao objetivo principal do nosso estudo sobre a ferramenta Ant: a criação de arquivos War (Web Archive). Para este propósito usaremos a tarefa War, que fornece uma forma bem dinâmica de montar a estrutura de diretórios exigida por aplicações web. Clique aqui caso você ainda não conheça a forma básica de organização de arquivos em uma aplicação web desenvolvida em Java.

Quando usamos a tarefa War para empacotar os arquivos de uma aplicação web, o próprio Ant se encarrega de distribuir os diversos arquivos nos diretórios WEB-INF, WEB-INF/lib e WEB-INF/classes. Para ver como isso funciona você deverá seguir atentamente as instruções seguintes:



1) Crie um diretório chamado "c:\TesteWar" (ou algo parecido). Desde que seja um nome de arquivo curto e fácil de ser lembrado;

2) Abra seu editor de texto e crie dois documentos JSP e um documento HTML. Estes documentos podem estar sem nenhum conteúdo. Salve-os com os nomes de "index.jsp", "login.jsp" e "index.html" no diretório que você criou no passo 1, ou seja, "c:\TesteWar".

3) Crie um documento XML chamado web.xml (pode ser completamente em branco). Salve-o no diretório criado no passo 1.

4) Crie pastas chamadas libs e java dentro do diretório "c:\TesteWar". Encontre em seu sistema alguns arquivos .jar e copie-os para a pasta libs. Agora copie alguns arquivos .class para a pasta java.

5) Se você seguiu os passos anteriores atentamente já podemos escrever o documento XML que nos possibilitará criar a estrutura da aplicação web e empacotá-la em um arquivo War. Para isso crie o arquivo XML a seguir:

<project name="teste" basedir="." default="build">

    <property name="dist.dir" location="dist"/>

    <target name="build">
        <mkdir dir="${dist.dir}" />

        <war destfile="${dist.dir}/TesteWar.war" webxml="web.xml">
            <fileset dir="${basedir}">
                <include name="**/*.jsp"/>
                <include name="**/*.html"/>
            </fileset>
            <lib dir="libs" />
            <classes dir="java"/>
        </war>
    </target>

</project>


Salve este arquivo como build.xml no diretório "c:\TesteWar". Antes de efetuarmos o teste definitivo responda as questões seguintes:

a) Você tem um diretório chamado "c:\TesteWar" contendo os arquivos index.jsp, login.jsp, index.html, build.xml e web.xml e as pastas libs e java?
b) A pasta libs contém um ou mais arquivos .jar?
c) A pasta java contém um ou mais arquivos .class?

Se você respondeu "sim" às três perguntas, abra uma seção do DOS e navegue até o diretório "c:\TesteWar". Em seguida execute o comando:

ant build

Se estiver tudo correto, você terá o seguinte resultado:

Buildfile: build.xml

build:
    [mkdir] Created dir: C:\TESTEWAR\dist
    [war] Building war: C:\TESTEWAR\dist\TesteWar.war

BUILD SUCCESSFUL
Total time: 2 seconds

Observe que o resultado final, ou seja, o arquivo .war foi gerado e colocado na pasta dist no diretório atual. No próximo tópico você aprenderá como usar a tarefa Unwar para extrair o conteúdo de um arquivo War. Enquanto isso, renomeie o arquivo TesteWar.war para TesteWar.zip e descompacte-o. Observe sua estrutura. Não é semelhante à estrutura das aplicações web desenvolvidas nas tecnologias relacionadas ao Java (JSP, Struts, JSF, Servlets, etc)? Se você não tem muito conhecimento da estrutura de uma aplicação Web recomendo que consulte este link.

Este documento XML é bem parecido àqueles que você terá que escrever quando estiver desenvolvendo aplicações web usando JSP, Struts, JSF, Servlets, etc. Por esta razão, vamos analisá-lo cuidadosamente. Comece analisando o elemento principal, ou seja, a tag <project>:

<project name="teste" basedir="." default="build">

O nome do projeto é teste, o diretório base á aquele em que o arquivo build.xml reside e o alvo padrão é build. Lembre-se de que o alvo padrão é aquele executado quando o Ant é invocado sem nenhum argumento. Em seguida temos uma tarefa property:

<property name="dist.dir" location="dist"/>

Esta tarefa poderá ser referenciada nas demais tarefas usando-se a forma ${dist.dir} e representa o diretório onde o arquivo War será gerado. Veja agora a estrutura do alvo build:

<target name="build">
    <mkdir dir="${dist.dir}" />

    <war destfile="${dist.dir}/TesteWar.war" webxml="web.xml">
        <fileset dir="${basedir}">
            <include name="**/*.jsp"/>
            <include name="**/*.html"/>
        </fileset>
        <lib dir="libs" />
        <classes dir="java"/>
    </war>
</target>

A primeira tarefa deste alvo cria o diretório dist:

<mkdir dir="${dist.dir}" />

Veja como este diretório é fornecido ao atributo destfile da tarefa war:

<war destfile="${dist.dir}/TesteWar.war" webxml="web.xml">

Os dois atributos mais importantes da tarefa war são destfile e webxml. Veja suas definições:

destfile: É o nome do arquivo war a ser criado. Não esqueça de adicionar a extensão .war.
webxml: É o caminho relativo e o nome do arquivo descritor de instalação. Este arquivo, geralmente chamado de web.xml fornece ao container ou servidor de aplicações, informações sobre os componentes usados, as variáveis de ambiente e os requisitos de segurança. A própria tarefa war se encarrega de copiar este arquivo para o diretório WEB-INF.

Para definir os arquivos que serão copiados para o diretório raiz da aplicação web usamos o elemento fileset. Este elemento permite copiar os arquivos e pastas contidas no diretório fornecido para o atributo dir. Para o nosso exemplo queremos apenas os documentos com as extensões .jsp e .html. Para isso usamos o elemento include com a extensão dos arquivos a serem incluídos:

<fileset dir="${basedir}">
    <include name="**/*.jsp"/>
    <include name="**/*.html"/>
</fileset>

O elemento fileset fornece muita funcionalidade que, um tópico inteiro deveria ser dedicado a ele. Recomendo que estude a seção da documentação Ant que trata dos elementos fileset, dirset e filelist. Mas não se preocupe. Sempre que estes elementos forem usados nos exemplos, uma explicação sobre sua funcionalidade será fornecida.

O próximo passo é definir o diretório que contem os arquivos a serem copiados para o diretório lib da aplicação web. Isso é feito por meio do elemento lib:

<lib dir="libs" />

Aqui, todos os arquivos e pastas contidas no diretório libs serão copiados para o diretório lib da aplicação. Procedimento semelhante é adotado para copiar os arquivos do diretório java para o diretório classes da aplicação web. Desta vez usamos o elemento classes:

<classes dir="java"/>

Para finalizar só precisamos fechar a tarefa war:

</war>

Pareceu complicado? Os primeiros documentos XML para a geração de arquivos war são, de fato, complicados. Mas, à medida que você se acostumar a eles verá com que facilidade eles podem ser escritos e reaproveitados. Recomendo que efetue algumas alterações neste documento e veja os resultados obtidos. Em seguida veremos como usar a tarefa Unwar para extrair o conteúdo de um arquivo war.

Importante:
Quando a estrutura de desenvolvimento da aplicação web for semelhante àquela do pacote WAR, você poderá usar uma ferramenta de compactação zip. As ferramentas mais modernas destinadas a esta tarefa possibilitam a você selecionar um grupo de diretórios e/ou arquivos, clicar com o botão direito em qualquer parte da seleção e escolher o nome do arquivo zip que representará o resultado final. Mais tarde você só precisará renomear este resultado para .war e sua aplicação estará pronta para ser distribuída.
Este tutorial contém as seguintes seções:
  1. Apresentação
  2. O que é o Apache Ant?
  3. Baixando e Instalando o Apache Ant
  4. Entendendo alvos, tarefas e o arquivo build.xml
  5. Criando diretórios e copiando arquivos usando Ant
  6. Usando variáveis durante o processo de automação de tarefas
  7. Como compilar arquivos Java usando Ant
  8. Uso do Ant na execução de aplicativos Java
  9. Exibindo mensagens durante o processo de automação das tarefas
  10. Empacotando aplicações web com o uso da tarefa War
  11. Usando a tarefa Unwar para extrair o conteúdo de um arquivo War
  12. Como gerar arquivos JAR usando Ant
  13. Interagindo com o Ant via console durante a execução dos arquivos de build
  14. Como obter valores via console durante a execução de um build Ant
  15. Como validar a entrada do usuário em um arquivo de build (como estender a classe Task do Ant)
 
 
Arquivo de Códigos - Página Inicial
Veja dicas, truques e anotações de .NET Framework
Entenda a classe StreamReader
Entenda a classe StreamWriter
Veja dicas, truques e anotações de outras linguagens
VB.NET - Usando o laço Do...Until...Loop do VB.NET
C++ - Entendendo a função WinMain das aplicações GUI usando a Windows API
Adobe Flex - Como excluir o ítem selecionado em um List
C# (CSharp) - Usando o método IndexOf para contar as ocorrências de um caractere em uma string
JSP (Java Server Pages) - Entendendo o atributo autoFlush da diretiva de página
C# (CSharp) - Criando e usando sua primeira classe em C#
Java - Como remover espaços em excesso de uma string
ActionScript - O laço do..while do ActionScript
Java - Exibindo ou ocultando um JButton
C# (CSharp) - Como excluir (remover, deletar, apagar) um arquivo usando C#


http://www.arquivodecodigos.net
:: Arquivo de Códigos - Softwares e Consultoria em Programação ::
Todo o conteúdo deste site, quando não devidamente observado, pertence a seus idealizadores e não
poderá ser usado para outras finalidades senão estudo e aprimoramento de técnicas de programação.
Certifique-se de ler as notas legais antes de proceder com o acesso e leitura do
conteúdo disponibilizado nestas páginas.

Fale Conosco: (62) 3261-7018 / (62) 8185-0734

Desenvolvedor Responsável: Osmar J. Silva

Página Inicial Contatos Pesquisar Mapa do Site