Apache 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.
Desenvolvedor | Apache Software Foundation |
Lançamento | julho de 2000 |
Versão estável | 1.9.4 (5 de maio de 2014 | )
Escrito em | Java |
Sistema operativo | Multiplataforma |
Gênero(s) | Automação de compilação |
Licença | Apache License 2.0 |
Página oficial | ant |
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.
Exemplo de arquivo build.xml
editar
<?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>
Portabilidade
editarUm 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.
História
editarO 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.
Limitações
editar- 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 ao gerenciamento de múltiplas construções ao longo de um dia.
Ver também
editarBibliografia
editar- Jessy Tilly, Eric M. Burke: Ant - The Definitive Guide, O'Reilly & Associates, ISBN 0-596-00184-3
- Erik Hatcher, Steve Loughran: Java Development with Ant, Manning Publications, ISBN 1-930110-58-8
- Glenn Niemeyer, Jeremy Poteet: Extreme Programming with Ant, Sams, ISBN 0-672-32562-4
- Alan Williamson: Ant - Developer's Handbook, Sams, ISBN 0-672-32426-1
- Bernd Matzke: Ant, Addison-Wesley, ISBN 3-8273-2066-6
Ligações externas
editar- (em inglês) Página Oficial do Projeto Apache Ant
- (em inglês) Página wiki do projeto Apache Ant
- (em inglês) Biblioteca para visualização simples de arquivos build.xml
- (em inglês) Livro Wiki sobre Ant
- (em inglês) Manual Ant