Apache Ant

Hulpprogramma voor het geautomatiseerd maken van uitvoerbare computerprogramma's vanuit bronteksten

Apache Ant is een computerprogramma voor het automatiseren van het bouwproces van software. Het is vergelijkbaar met make, met het verschil dat Ant in Java is geschreven en zich ook voornamelijk richt op het bouwen van Javaprogramma's.

Apache Ant
Logo
Ontwikkelaar(s) Apache Software Foundation
Uitgebracht 19 juli 2000 (24 jaar)
Recentste versie 1.10.14 (21 augustus 2023)[1] Bewerken op Wikidata
Status Actief
Besturingssysteem Multiplatform
Geschreven in Java
Categorie Build-tool
Licentie(s) Apache Licentie v2.0
Versiebeheer Officiële broncode
Website (en) Projectpagina
Portaal  Portaalicoon   Informatica
Javaplatform

Werking

bewerken

Ant probeert aan de hand van een beschrijving (de build file) een doel te bereiken. In de build file staat beschreven welke taken moeten worden uitgevoerd om een doel te bereiken. Het kan zo zijn dat het kunnen bereiken van een doel alleen kan als er eerst andere doelen zijn bereikt. Deze afhankelijkheden worden ook in de build file beschreven.

Ant gebruikt de build-file om te bepalen welke taken in welke volgorde moeten worden uitgevoerd en zorgt automatisch voor het juist afhandelen van de afhankelijkheden tussen doelen.

Voorbeeld

bewerken

Hier volgt een voorbeeld van een mogelijke Ant build file voor een eenvoudige "Hello, world" applicatie. Er worden drie targets (doelen) gedefinieerd: clean, compile en jar, elk voorzien van een omschrijving. Het jar target is afhankelijk van het compile target. Ant zal daarom eerst het compile target uitvoeren voordat het jar target kan worden uitgevoerd.

Binnen een target zijn de taken opgenomen die Ant moet uitvoeren om dat doel te bereiken. Om het compile target te halen moet Ant eerst een directory maken met de naam classes en daarna de Java compiler aanroepen.

 <?xml version="1.0"?>
 <project name="Hello" default="compile">
     <target name="clean" description="verwijder tijdelijke files">
         <delete dir="classes"/>
     </target>
     <target name="compile"
      description="compileer de Java sources naar .class files">
         <mkdir dir="classes"/>
         <javac srcdir="." destdir="classes"/>
     </target>
     <target name="jar" depends="compile"
      description="Maak een Jar file voor de applicatie">
         <tstamp prefix="builddate"/>
         <jar destfile="hello.jar">
             <fileset dir="classes" includes="**/*.class"/>
             <manifest>
                 <attribute name="Main-Class" value="HelloProgram"/>
                 <attribute name="Implementation-Version" value="${builddate.DSTAMP}"/>
             </manifest>
         </jar>
     </target>
 </project>

Door het uitvoeren van

ant jar

zal het jar target worden uitgevoerd, nadat Ant automatisch het compile target heeft uitgevoerd.

ant 

zorgt voor het uitvoeren van het default target van het project, in dit geval compile.

Portabiliteit

bewerken

Een van de doelstellingen van Ant is het oplossen van de portabiliteitsproblemen van make. In een makefile worden over het algemeen veel shellscripts aangeroepen die specifiek zijn voor het platform dat gebruikt wordt om de software te bouwen. Het verwijderen van een directory zou met make bijvoorbeeld

rm -rf classes/

kunnen zijn. Dit is een specifiek UNIX-commando dat niet op een Windows-machine zal werken.

Met Ant wordt een directory verwijderd met bijvoorbeeld

<delete dir="classes"/>

Hiermee wordt een platformonafhankelijke verwijdering van de directory bereikt. Ant maakt het mogelijk dat binnen een Java project verschillende platforms kunnen worden gebruikt zonder portabiliteitsproblemen met het bouwproces.

Sterke punten

bewerken

Met Ant is het mogelijk om geheel geautomatiseerd software te bouwen, ook in projecten waar veel programmeurs bij betrokken zijn. Ant kent tasks voor het aanroepen van version control systemen voor het ophalen van broncode, taken voor het uitvoeren van unit testen met bijvoorbeeld JUnit, taken voor het gebruiken van FTP, mogelijkheden voor het per e-mail versturen van het resultaat van het bouwproces en nog veel meer.

Veel Java gereedschappen worden geleverd met een Ant-task, zodat het gereedschap eenvoudig vanuit Ant kan worden aangeroepen.

Zwakke punten

bewerken

Het gebruik van XML als formaat voor de beschrijving van het bouwproces kan zorgen voor zeer grote build files, mede omdat Ant-tasks vaak gedetailleerd ingesteld kunnen worden met veel parameters.

Geschiedenis

bewerken

Ant is bedacht door James Duncan Davidson toen hij een product van Sun open source maakte. Dit product werd later Apache Tomcat. De vroege versie van Ant werd gebruikt om Tomcat te bouwen op Solaris. Ant werd officieel op 19 juli 2000 uitgebracht als versie 1.1.

bewerken
Wikibooks heeft een Engelstalig boek over dit onderwerp: Apache Ant.