Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
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:
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>:
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:
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:
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.
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 asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.