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.
 
Arquivo de Códigos - Página Inicial
Códigos-fonte
» Códigos-fonte e exemplos completos
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: 129
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
Como gerar arquivos JAR usando Ant
Agora que você já conhece algumas das tarefas básicas da ferramenta Ant, podemos avançar um pouco mais. Neste tópico você aprenderá como escrever um aplicativo Java composto de três classes. Em seguida escreverá um arquivo de build que compilará estas classes. Finalmente você as colocará em um arquivo Jar para distribuição. Lembre-se de que todo o processo de compilação das classes e geração do arquivo Jar deverá ser feito por um único arquivo de build.

O primeiro passo será escrever os arquivos .java que farão parte do exemplo. Este é um aplicativo simples composto de três classes chamadas Empresa, Funcionario e Cliente (boa hora para praticar composição).



Para acompanhar este exemplo você deverá criar um diretório chamado testes em seu sistema (no meu sistema estou usando "C:\testes"). Em seguida crie três arquivos .java de acordo com as listagens seguintes (para sua comodidade estes arquivos estão disponíveis para download. Basta clicar no nome de cada um deles):

Listagem para a classe Funcionario.java:

class Funcionario{
    private String nome;
    private double salario;

    public Funcionario(String nome, double salario){
        this.nome = nome;
        this.salario = salario;
    }

    public String getNome(){
        return nome;
    }

    public double getSalario(){
        return salario;
    }
}


Listagem para a classe Cliente.java:

class Cliente{
    private String nome;
    private int codigo;

    public Cliente(String nome, int codigo){
        this.nome = nome;
        this.codigo = codigo;
    }

    public String getNome(){
        return nome;
    }

    public int getCodigo(){
        return codigo;
    }
}


Listagem para Empresa.java:

public class Empresa{
    public static void main(String args[]){
        Funcionario func = new Funcionario("Carlos", 3465.23);
        Cliente cli = new Cliente("Bush", 324);

        System.out.println("Funcionário: " + func.getNome());
        System.out.println("Cliente: " + cli.getCodigo());

        System.exit(0);
    }
}


Este exemplo é muito simples. Tudo que temos aqui é uma classe pública (Empresa) que constrói instancias de duas classes que possuem acesso de pacote. Não entraremos em detalhes sobre o funcionamento de cada uma. Nosso objetivo é entender como o Ant nos possibilita compilar e empacotar estas classes em um arquivo Jar. Sendo assim vamos escrever o arquivo build.xml. Eis a listagem:

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

    <property name="classes" location="classes"/>

    <target name="dir">
        <mkdir dir="classes" />
    </target>

    <target name="limpar">
        <delete dir="classes"/>
    </target>

    <target name="compilar" depends="dir">
        <javac srcdir="${basedir}"
        classpath="${classes}"
        destdir="${classes}" />
    </target>

    <target name="empacotar" depends="compilar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/Empresa.jar"
            basedir="${basedir}/classes">
            <manifest>
                <attribute name="Main-Class" value="Empresa"/>
            </manifest>
        </jar>
    </target>

    <target name="executar" depends="empacotar, limpar">
        <java jar="build/jar/Empresa.jar" fork="true"/>
    </target>

</project>


Antes de executarmos este exemplo certifique-se de ter efetuado todos os passos descritos anteriormente, ou seja, você deverá ter um diretório chamado C:\testes contendo três arquivos .java e o arquivo de build (build.xml). Agora é só abrir uma seção do DOS, navegar até C:\testes e inserir o comando abaixo:

C:\testes>ant

Veja o resultado da execução do arquivo de build:

Buildfile: build.xml

dir:
    [mkdir] Created dir: C:\testes\classes

compilar:
    [javac] Compiling 3 source files to C:\testes\classes

empacotar:
    [mkdir] Created dir: C:\testes\build\jar
    [jar] Building jar: C:\testes\build\jar\Empresa.jar

limpar:
    [delete] Deleting directory C:\testes\classes

executar:
    [java] Funcionario: Osmar
    [java] Cliente: 324

BUILD SUCCESSFUL
Total time: 8 seconds


Como podemos ver por este resultado, nosso arquivo de build foi executado da maneira que esperávamos. Abra o diretório C:\testes\build\jar e verá que o arquivo Empresa.jar realmente foi gerado. Caso deseje executa-lo novamente sem a ajuda do Ant basta abrir uma seção do DOS e digitar o comando abaixo:

C:\testes\build\jar>java -jar Empresa.jar

Vamos agora entender todas as tarefas contidas neste arquivo de build. Comece analisando o elemento project:

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

Veja que o nome do projeto é teste, o diretório base é o diretório atual e a tarefa padrão (no caso de omitirmos a tarefa na linha de comando) é executar. Em seguida temos a tarefa property que nos permite definir uma variável global chamada classes:

<property name="classes" location="classes"/>

Essa variável será usada para indicarmos para o arquivo de build o diretório onde os arquivos .java deverão ser colocados após a compilação.

Quando este arquivo de build é executado temos uma série de tarefas dependentes umas das outras. Por exemplo, a tarefa executar depende das tarefas empacotar e limpar. Já a tarefa empacotar depende da tarefa compilar e assim por diante. Veja a seqüência da execução das tarefas (assumindo que a tarefa padrão seja executar):

1º - dir
2º - compilar
3º - empacotar
4º - limpar
5º - executar

Veja o trecho da tarefa dir:

<target name="dir">
    <mkdir dir="classes" />
</target>


Tudo que fazemos aqui é criar um diretório chamado classes. Em seguida observe a tarefa compilar:

<target name="compilar" depends="dir">
    <javac srcdir="${basedir}"
    classpath="${classes}"
    destdir="${classes}" />
</target>


Para a tarefa javac definimos valores para três atributos. São eles:

1. srcdir – define o diretório em que os arquivos .java a serem compilados se encontram. Usamos o atributo basedir para especificar o diretório atual.
2. classpath - Usado para indicar ao compilador o(s) caminho(s) em que algumas classes necessárias ao correto processo de compilação de encontram. Para o caso de você precisar especificar mais de um caminho, é possível usar vírgulas ou ponto-e-vírgula no valor do atributo.
3. destdir – define o diretório onde as classes compiladas serão gravadas.

E agora, a tarefa mais importante do build, a tarefa responsável por gerar o arquivo jar:

<target name="empacotar" depends="compilar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/Empresa.jar"
        basedir="${basedir}/classes">
        <manifest>
            <attribute name="Main-Class" value="Empresa"/>
        </manifest>
    </jar>
</target>


O primeiro passo é criar o diretório onde o arquivo jar será gravado:

<mkdir dir="build/jar"/>

Em seguida temos a tarefa jar. Esta tarefa possui os seguintes atributos:

a) destfile – É o caminho e nome do arquivo jar a ser criado.
b) basedir – Diretório a partir do qual os arquivos a serem incluídos no JAR serão pesquisados.

Todo arquivo jar precisa ter o arquivo de manifesto. Este arquivo é criado com o elemento manifest:

<manifest>
    <attribute name="Main-Class" value="Empresa"/>
</manifest>


É aqui que fornecemos o nome da classe principal do aplicativo. Falhar em fornecer este valor fará com que o arquivo jar não seja executado corretamente.

Após a geração do arquivo jar, o diretório classes é excluído com a seguinte tarefa:

<target name="limpar">
    <delete dir="classes"/>
</target>


E, finalmente, o aplicativo é executado com a seguinte tarefa:

<target name="executar" depends="empacotar, limpar">
    <java jar="build/jar/Empresa.jar" fork="true"/>
</target>


Quando o valor true é fornecido para o atributo fork da tarefa java, a execução do arquivo é feita em uma nova instancia da JVM e não aquela que está sendo usada para a execução do Ant.
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 PHP
Criando arrays com a construção array() e índices automáticos
Como usar o laço foreach para acessar todos os elementos de um array associativo
Usando a função empty() para determinar se uma variável está vazia (não possui nenhum conteúdo)
Quais as diferenças entre fgetc(), fread() e fgets()?
Como obter o caminho completo de um arquivo no servidor web
Obter o último dia útil para um determinado mês e ano
Quais as diferenças entre include e require?
Selecionando a base de dados MySQL a ser usada
Alguns conceitos básicos sobre gráficos e cores
Obtendo o valor de PI em PHP
Veja dicas, truques e anotações de outras linguagens
VB.NET - Calculando juros simples e montante usando VB.NET
Java - Como converter uma imagem colorida em tons de cinza (gray scale) usando ColorSpace e ColorConvertOp
Delphi - Lendo todo o conteúdo de um arquivo texto usando Delphi
C# (CSharp) - Como remover quebras de linhas de uma string
Java - Como obter o valor do item selecionado em um JComboBox
Ruby - Como quebrar um string usando o espaço como delimitador e retornar um array de palavras
Java - Obter uma lista dos nomes dos formatos que podem ser escritos pelas classes da versão atual do Java
Python - Como verificar se uma string contém apenas números (dígitos)
VB.NET - Obtendo o dia da semana no formato dom, seg, ter, qua, etc
Java - O que são threads e como usá-las em seus programas

       

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