| Apache Ant (Another Neat Tool) | |
|---|---|
| Desenvolvedor | Apache Software Foundation |
| Lançamento inicial | julho de 2000 |
| Lançamento estável | 1.9.4
/ 5 de maio de 2014 |
| Repositório | |
| Escrito em | Java |
| Sistema operacional | Multiplataforma |
| Tipo | Automação de compilação |
| Licença | Apache License 2.0 |
| Website | ant |
Apache Ant é uma ferramenta utilizada para automação de compilação na 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.
build.xml<?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. Em um 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; e ponto e vírgula ou vírgula para separadores de caminhos. Ele converte tudo para a forma apropriada para a plataforma corrente.
O Ant foi inventado por James Duncan Davidson, enquanto migrava um produto da Sun Microsystems para o modelo de 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 do 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 até mesmo a Extreme Programming.