O que é o Apache Ant?

Apache Ant é uma ferramenta utilizada para automatizar a construção de software. Ela é similar ao make mas é escrita na linguagem Java e foi desenvolvida inicialmente para ser utilizada em projetos desta linguagem.

A mais aparente diferença entre as ferramentas Ant e make, é que a primeira utiliza um arquivo no formato XML para descrever o processo de construção (build) e suas dependências, enquanto o make possui o seu próprio formato de arquivo, o Makefile. Por padrão este arquivo XML tem o nome build.xml.

A ferramenta Ant é um projeto da Apache Software Foundation. É um software livre, licenciado sob a licença Apache.

<?xml version=”1.0″?>

<project name=”Hello” default=”compile”>

    <target name=”clean” description=”remove arquivos intermediarios”>

        <delete dir=”classes” />

    </target>

    <target name=”compile”

     description=”compila o código fonte Java do arquivo class”>

        <mkdir dir=”classes” />

        <javac srcdir=”.” destdir=”classes” />

    </target>

    <target name=”jar” depends=”compile”

     description=”cria o arquivo Jar para a aplicação”>

        <jar destfile=”hello.jar”>

            <fileset dir=”classes” includes=”**/*.class” />

            <manifest>

                <attribute name=”Main-Class” value=”HelloProgram” />

            </manifest>

        </jar>

    </target>

</project>

Um dos principais objetivos do Ant é resolver os problemas de portabilidade do make. Num arquivo Makefile (o arquivo lido pelo make) as ações para construir o projeto (por exemplo, gerar um arquivo executável) são disparadas por comandos do sistema operacional (ou mais especificamente, da sua shell), usualmente uma shell Unix. O Ant resolve este problema através do grande número de funcionalidades próprias, e que garante que se comportarão identicamente (em tese pelo menos) em todas as plataformas.

Por exemplo, no arquivo build.xml, mostrado acima, a diretiva clean apaga o diretório classes e todos arquivos abaixo dele. Em um arquivo Makefile típico, isto seria feito com o comando:

rm -rf classes/

Este comando, rm, é próprio do Unix e muito provavelmente não estará disponível se o ambiente não for Unix, como o Microsoft Windows. Num arquivo de construção Ant esta mesma operação seria realizada através do comando:

<delete dir="classes"/>

Uma discrepância comum entre sistemas operacionais está na forma em que os caminhos de diretórios são especificados. Os sistemas Unix utilizam uma barra (/), enquanto no Windows é utilizada uma barra invertida (). O Ant deixa o autor escolher a sua forma preferida: barras ou barras invertidas para diretórios; ponto e vírgula ou vírgula para separadores de caminhos. Ele converte tudo para a forma apropriada para a plataforma corrente.

História do Ant

O Ant foi inventado por James Duncan Davidson enquanto migrava um produto da Sun Microsystems para o modelo software livre. O produto, que posteriormente foi chamado Apache Tomcat, era conhecido como a implementação de referência para o padrão JSP/Servlet. A ferramenta make pode ser utilizada na construção no Solaris, mas no mundo do software livre não há como controlar em qual plataforma o usuário construirá o Tomcat. O Ant foi criado como uma ferramenta simples que utilizava um “arquivo de construção” em XML para construir o Tomcat, independentemente da plataforma alvo. A partir deste início humilde, a ferramenta tornou-se mais presente, e talvez teve maior êxito, que o próprio Tomcat para o qual foi criada. A ferramenta Ant foi inicialmente liberada como um produto independente em 19 de julho de 2000, na sua versão 1.1. Ela passou a ser base dos projetos de ‘software livre escritos em Java.

Devido à facilidade para integrar, testes feitos em JUnit com o processo de construção, a ferramenta Ant permitiu que os desenvolvedores adotassem facilmente o modelo de “desenvolvimento orientado a testes” (test-driven development), e mesmo a Extreme Programming

Limitações do Ant

Os arquivos de construção devem ser escritos no formato XML. Alguns consideram esta característica uma barreira para usuários novatos e para grandes projetos onde estes arquivos podem se tornar grandes e complexos. Este é um problema de todas as linguagens baseadas em XML, mas ocorre particularmente no caso do Ant, em grandes projetos com um grande número de tarefas. A ferramenta Apache Maven pode ser utilizada como alternativa para solucionar estes problemas, já que tem uma visão de mais alto nível na construção de sistemas.

Algumas “tarefas” Ant mais velhas, como <javac>, <exec> e <java>, têm opções que utilizam valores padrão que não são consistentes com as tarefas mais recentes. Ao mudar estes valores o usuário corre o risco de provocar erros em versões mais novas.

No caso de substituição de strings existentes em arquivos de propriedades, se estas strings não forem definidas, o Ant não levanta uma exceção e mantém a referência no texto. Por exemplo, ${unassigned.property}.

O tratamento de exceções e de persistência de estado é limitado, por isso, a ferramenta não é considerada uma alternativa para o gerenciamento de múltiplas construções ao longo de um dia.


Tags:

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *