Apache Ant – narzędzie służące do zautomatyzowania procesu budowy oprogramowania. Podobne do programu Make, ale napisane w języku Java do wykorzystania przede wszystkim z programami napisanymi w tym języku.
Od razu zauważalną różnicą pomiędzy Ant i Make jest to, że Ant używa plików w formacie XML do opisu procesu budowy i jego zależności, gdzie Make ma własny format Makefile. Domyślnie plik XML nazywa się build.xml.
Ant jest jednym z projektów Apache Software Foundation.
Przykładowy plik build.xml
Poniżej znajduje się przykładowy plik build.xml dla prostej aplikacji "Hello, world" napisanej w języku Java. Definiuje trzy targets – clean, compile, jar, każdy z nich ma dołączony opis. Target jar ma opisany cel compile jako zależność. To mówi programowi Ant, że zanim rozpocznie target jar musi ukończyć target compile.
Każdy target to czynności jakie musi wykonać Ant żeby zbudować dany target. Np. do zbudowania target compile Ant musi najpierw stworzyć folder o nazwie classes (Ant stworzy go jeżeli jeszcze nie istnieje), po czym odwoła się do kompilatora Javy.
<?xml version="1.0"?>
<project name="Hello" default="compile">
<target name="clean" description="remove intermediate files">
<delete dir="classes"/>
</target>
<target name="compile"
description="compile the Java source code to class files">
<mkdir dir="classes"/>
<javac srcdir="." destdir="classes"/>
</target>
<target name="jar" depends="compile"
description="create a Jar file for the application">
<jar destfile="hello.jar">
<fileset dir="classes" includes="**/*.class"/>
<manifest>
<attribute name="Main-Class" value="HelloProgram"/>
</manifest>
</jar>
</target>
</project>
Przenośność
Jednym z głównych celów Ant było rozwiązanie problemu przenośności Make. W pliku Makefile czynności potrzebne do stworzenia target są określone jako komendy powłoki, które są zależne od platformy. Ant rozwiązuje ten problem dostarczając dużą liczba wbudowanych funkcji, co gwarantuje identyczne zachowanie na wszystkich platformach.
Np. w ww. pliku build.xml target clean kasuje rekursywnie folder classes. W pliku Makefile byłoby to zapisane w następujący sposób:
rm -rf classes/
rm to Uniksowa komenda, która nie będzie dostępna w środowisku nie-uniksowym takim jak Windows.
W pilku build.xml wykorzystywanym przez Ant ta sama operacja będzie wykonana za pomocą wbudowanej komendy:
Różnica pomiędzy platformami wynika ze sposobu przedstawiania ścieżki dostępu. Unix używa forward slash (/) do określenia ścieżki z kolei Windows backslash (\). Pliki build programu Ant używają Uniksowej konwencji, po czym konwertują ścieżkę do formatu określonej platformy.
Historia
Ant został wymyślony przez Jamesa Duncana Davidsona podczas prac nad otworzeniem źródeł produktu firmy Sun Microsystems, który później został nazwany Jakarta Tomcat. Przy zamkniętych źródłach nie można było używać Make do zbudowania go na Solarisie, dlatego, aby umożliwić kompilację na dowolnej platformie, powstał Ant korzystający z XML-owych plików build. Początkowo Ant był częścią bazy kodu projektu Tomcat, lecz od 2000 roku został przeniesiony do oddzielnego repozytorium o stał się samodzielnym projektem[1]. Od samego początku narzędzie wzbudzało większe zainteresowanie i aprobatę niż projekt Tomcat.
Zobacz też
Przypisy
Linki zewnętrzne