Apache ANT Tutorial: Hvad er Ant Build Tool? Eksempel
โก Smart opsummering
Apache ANT er en Java baseret byggevรฆrktรธj, der automatiserer kompilering, testning, pakning og implementering via en XML-byggefil. Denne artikel definerer vรฆrktรธjet, traces dens historie, dรฆkker Windows installation, forklarer projektstrukturen og sammenligner den med Maven og Gradle.

Hvad er et byggevรฆrktรธj?
Et byggevรฆrktรธj er et programmeringsvรฆrktรธj, som bruges til at bygge en ny version af et program. Det automatiserer oprettelsen af โโet eksekverbart program fra enhver kildekode.
Uden et byggevรฆrktรธj ville en udvikler manuelt kompilere hver kildefil, kopiere ressourcer, kรธre testpakken og pakke resultatet af hver รฆndring. Et byggevรฆrktรธj registrerer disse trin รฉn gang og gentager dem identisk pรฅ hver maskine.
Hvad er Apache Ant?
Apache Ant er en Java-baseret kommandolinjevรฆrktรธj til bygning Java applikationer med fuld portabilitet af pure Java kode. Det giver udviklere mulighed for at anvende agile principper og testdrevet udvikling for at automatisere gentagne udviklingsopgaver som f.eks. generering af dokumentation. Ant er et akronym for Another Neat Tool.
Som diagrammet viser, lรฆser Ant en byggefil, bestemmer rรฆkkefรธlgen af โโmรฅlene i den og kรธrer derefter de individuelle opgaver, der kompilerer, kopierer, tester og pakker applikationen.
Hvad bruges Apache Ant Build-vรฆrktรธj til?
Her er vigtige fordele ved at bruge byggevรฆrktรธjet:
- Et byggevรฆrktรธj giver dig mulighed for at automatisere specifikke gentagne opgaver, sรฅsom at kompilere kildekoden, kรธre softwaretests og oprette filer til softwareimplementering.
- Byggevรฆrktรธjer kรธrer for det meste uden en grafisk brugergrรฆnseflade.
- Det hjรฆlper dig med at konvertere kildekode til eksekverbar kode.
- Den tilbyder kun en mulighed for at rekompilere en fil, hvis det er nรธdvendigt.
- Det giver dig mulighed for at kompilere et stort antal filer pรฅ relativt kort tid.
- To meget populรฆre byggevรฆrktรธjer brugt af Java udviklerne er Apache Maven og Ant.
Historien om Apache Ant
Nu vil vi lรฆre om historien bag Apache Ant-byggevรฆrktรธjet.
Her er vigtige historiske vartegn fra Apache Ant-vรฆrktรธjet:
- James Duncan Davidson skabte Ant i juli 2000.
- Det blev oprindeligt brugt til at bygge Tomcat og kom som et indbygget produkt i Tomcat-distributionssรฆttet.
- I maj 2014 blev Apache Ant version 1.9.4 udgivet med mange avancerede funktioner.
- 1.10.x-linjen startede i 2017 og er fortsat den aktivt vedligeholdte gren.
- Version 1.10.17 blev udgivet den 10. april 2026 og krรฆver mindst Java 8 lรธbetider.
Funktioner af Apache Ant
Her er de vigtigste funktioner i Apache Ant:
- Det er et open source-projekt.
- Det giver dig mulighed for at kรธre builds pรฅ begge Windows og UNIX- eller Linux-systemer.
- Du behรธver kun en FMV, da den kรธrer overalt, hvor en JVM er tilgรฆngelig.
- Den tilbyder en bred vifte af foruddefinerede opgaver.
- Det hjรฆlper dig med at kopiere filer fra et sted til et andet.
- Det tilbyder en grรฆnseflade til at udvikle brugerdefinerede opgaver.
- Det giver dig mulighed for at kalde builds fra kommandolinjen, hvilket nemt integreres med gratis og kommercielle IDE'er.
- Det giver dig mulighed for at implementere binรฆre filer pรฅ en testserver.
- Det tilbyder en udvidelig arkitektur.
- Den tilbyder bagudkompatibilitet pรฅ tvรฆrs af udgivelser.
Sรฅdan installeres og konfigureres Apache Ant pรฅ Windows
Nu vil vi lรฆre processen med at installere Apache Ant pรฅ Windows.
Vi antager, at du allerede har downloadet og installeret Java Udviklingssรฆt (JDK) pรฅ din computer. Sรธrg for, at JAVA_HOME-miljรธvariablen er indstillet til den mappe, hvor din JDK er installeret. Fรธlg nedenstรฅende trin for at installere Ant:
Trin 1) Download de binรฆre filer.
Download binรฆre filer fra https://ant.apache.org/bindownload.cgi
Trin 2) Pak filer ud.
Pak denne zip-fil ud til en praktisk placering, f.eks. c:\mappe, ved hjรฆlp af WinZip, WinRAR, 7-Zip, eller et lignende vรฆrktรธj.
Trin 3) Opret en miljรธvariabel.
Opret en miljรธvariabel for "ANT_HOME", og tildel vรฆrdien af โโvariablen til placeringen af โโAnt-mappen.
- Hรธjreklik pรฅ ikonet "Denne pc".
- Klik pรฅ Egenskaber.
Trin 4) Gรฅ til systemindstillinger.
Klik pรฅ "Avancerede systemindstillinger".
Trin 5) Pรฅ systemegenskaber,
klik pรฅ fanen "Avanceret".
Trin 6) Find miljรธvariablerne.
Klik pรฅ knappen "Miljรธvariabler...".
Trin 7) Opret en ny variabel.
Klik pรฅ "Ny" for at oprette en ny brugervariabel.
Trin 8) Indtast variabeloplysningerne.
Indtast oplysninger om den nye brugervariabel.
- Indtast variabelnavnet som ANT_HOME.
- Indtast variabelvรฆrdien som den mappe, hvor Ant blev udpakket, for eksempel C:\apache-ant-1.10.17.
- Klik pรฅ knappen โOKโ.
Trin 9) Variabel oprettet.
Klik pรฅ knappen โOKโ.
Trin 10) Luk skรฆrmen.
Klik pรฅ "OK" for at lukke skรฆrmen.
๐ก Tip: ANT_HOME skal pege pรฅ selve installationsmappen, ikke pรฅ bin-mappen i den. Tilfรธj derefter %ANT_HOME%\bin til Path-variablen, sรฅ ant-kommandoen genkendes fra enhver mappe.
Du kan bekrรฆfte en vellykket Ant-installation ved at typing kommandoen โant -versionโ i kommandoprompten.
Du vil se fรธlgende skรฆrm:
Eksempel pรฅ Apache ANT
Byggefilen nedenfor definerer et enkelt mรฅl med navnet hello, der udskriver en besked. Project-elementet deklarerer et navn og et standardmรฅl, sรฅ Ant ved, hvad der skal kรธres, nรฅr der ikke er et navngivet mรฅl pรฅ kommandolinjen.
<?xml version="1.0"?> <project name="HelloWorld" default="hello" basedir="."> <target name="hello"> <echo>Hello, World</echo> </target> </project>
Gem denne fil som โbuild.xmlโ, og fรธlg derefter disse to trin:
- ร bn kommandoprompten, og gรฅ til den mappe, der indeholder build.xml.
- Kรธr
ant hello, eller simpelthenant, fordi hello er angivet som standardmรฅl. For at bruge et andet filnavn skal du kรธreant -f mybuild.xml hello.
Output:
Buildfile: C:\projects\demo\build.xml
hello:
[echo] Hello, World
BUILD SUCCESSFUL
Total time: 0 seconds
ANT-projektets struktur
ANT-projektets struktur
Som strukturdiagrammet viser, vil hver build indeholde tre noder:
- Projekt
- Target
- Opgaver
Projekt
Alt inde i build-filen i Apache ANT er under et projekt.
Attributter:
- Navn: Projektets navn.
- Baseret adresse: Dette er den mappe, hvorfra alle stierne beregnes. Dette kan tilsidesรฆttes ved at bruge egenskaben "basedir".
- Standard: Hjรฆlper dig med at definere standardmรฅlet for dette projekt. Hvis der ikke er angivet et mรฅl, vil Ant udfรธre standardmรฅlet.
Target
Et mรฅl er et sรฆt opgaver, der er defineret for at nรฅ en bestemt tilstand i byggeprocessen.
Attributter:
- Navn: Mรฅlets navn (pรฅkrรฆvet).
- Description: Description af mรฅlet.
- Afhรฆnger af: Hvilket mรฅl dette aktuelle mรฅl afhรฆnger af.
- Hvis: Udfรธrer kun mรฅlet, hvis der er angivet en vรฆrdi for en mรฅlegenskab.
- Med mindre: Udfรธrer kun mรฅlet, hvis egenskabsvรฆrdien ikke er angivet.
Opgaver
En opgave er et stykke kode, der kan udfรธres. Opgaver har flere argumenter eller attributter.
Det generelle metodemรธnster til at skrive en opgave er:
<name attribute1="value" attribute2="value2"โฆ/>
Du kan enten bruge en indbygget opgave, eller du kan oprette din egen opgave. Tabellen nedenfor viser de opgaver, der vises i nรฆsten alle Java byggefil.
| Opgaver | Formรฅl | Typiske egenskaber |
|---|---|---|
| ekko | Udskriv en besked til konsollen | besked |
| mkdir | Opret en mappe | dir |
| slette | Fjern filer eller mapper | mappe, inkluder tomme mappe |
| javanesisk | Kompiler Java kildefiler | srcdir, destdir, includeantruntime |
| krukke | Pak klasser ind i et jar-arkiv | destfile, basedir |
| kopiere | Kopier filer mellem lokationer | fil, til mappe |
| junit | Kรธr enhedstests | haltonfailure, printresumรฉ |
Komplet build.xml-eksempel med flere Targets
En realistisk byggefil kรฆder flere mรฅl sammen. Attributten depends garanterer rรฆkkefรธlgen, sรฅ Ant renser outputmappen, kompilerer kildekoden og fรธrst derefter bygger jar-filen.
<?xml version="1.0"?> <project name="DemoApp" default="jar" basedir="."> <!-- reusable values --> <property name="src.dir" value="src"/> <property name="build.dir" value="build"/> <target name="clean" description="Remove previous output"> <delete dir="${build.dir}"/> </target> <target name="compile" depends="clean" description="Compile sources"> <mkdir dir="${build.dir}/classes"/> <javac srcdir="${src.dir}" destdir="${build.dir}/classes" includeantruntime="false"/> </target> <target name="jar" depends="compile" description="Package the jar"> <mkdir dir="${build.dir}/jar"/> <jar destfile="${build.dir}/jar/DemoApp.jar" basedir="${build.dir}/classes"> <manifest> <attribute name="Main-Class" value="com.guru99.Main"/> </manifest> </jar> </target> </project>
Output:
Buildfile: C:\projects\DemoApp\build.xml
clean:
[delete] Deleting directory C:\projects\DemoApp\build
compile:
[mkdir] Created dir: C:\projects\DemoApp\build\classes
[javac] Compiling 3 source files to C:\projects\DemoApp\build\classes
jar:
[mkdir] Created dir: C:\projects\DemoApp\build\jar
[jar] Building jar: C:\projects\DemoApp\build\jar\DemoApp.jar
BUILD SUCCESSFUL
Total time: 1 second
Apache Ant vs Maven vs Gradle
Tre byggevรฆrktรธjer dominerer Java รธkosystem, og hver enkelt indtager en forskellig holdning til, hvor meget struktur der skal pรฅlรฆgges.
| Parameter | Apache Ant | Apache Maven | Gradle |
|---|---|---|---|
| Byg scriptformat | XML | XML | Groovy eller Kotlin DSL |
| Tilgang | Procedurel, du definerer hvert trin | Deklarativ, konvention frem for konfiguration | Deklarativ med scriptede udvidelser |
| Afhรฆngighedsstyring | Ikke indbygget, tilfรธjet via Apache Ivy | Indbygget med centralt lager | Indbygget, Maven-kompatibel |
| Projektets struktur | Helt gratis | Fast standardlayout | Konventionsbaseret, men tilsidesรฆttelig |
| Trinvise builds | Limited | Limited | Ja, med en build-cache |
| Indlรฆringskurve | Lav for XML-brugere | Moderat | Stejlere, krรฆver DSL |
| Bedste velegnet til | รldre projekter og meget brugerdefinerede builds | Standard Java projekter | Stort multimodul og Android projekter |
Ant er fortsat det pragmatiske valg, nรฅr et build ikke passer til et standardlayout, eller nรฅr et eksisterende projekt allerede er afhรฆngigt af hรฅndskrevne mรฅl.
Bedste praksis for at bruge Apache Ant
Her er nogle bedste fremgangsmรฅder for brug af Apache Ant.
- Du bรธr automatisere build-nummerering ved hjรฆlp af egenskabsfiler.
- Implementer et konfigurerbart build ved hjรฆlp af standard- og build-egenskabsfiler. Disse filer giver dig mulighed for at gemme egenskaber, der definerer dataene for din build-proces, f.eks. compilerversion og optimeringsindstillinger.
- Du kan genbruge forudbyggede biblioteker ved hjรฆlp af biblioteksegenskabsfiler.
- Giv hvert mรฅl en beskrivelsesattribut, sรฅ
ant -projecthelpviser en brugbar oversigt over buildet. - Hold det rene mรฅl separat, og slet aldrig en mappe, der ogsรฅ indeholder kildefiler.
Fordele ved at bruge Apache Ant
Her er fordelene ved at bruge Apache Ant:
- Ant er platformneutral, sรฅ det hjรฆlper dig med at administrere platformcentrerede egenskaber sรฅsom filseparatorer.
- Ant giver dig mulighed for at udfรธre platformspecifikke opgaver, sรฅsom at รฆndre den รฆndrede tid for en fil ved hjรฆlp af kommandoen 'touch'.
- Ant-scripts skrives ved hjรฆlp af almindelige XML, sรฅ hvis du allerede er bekendt med XML, vil du hurtigt kunne lรฆre Ant.
- Ant tilbyder en stor liste over foruddefinerede opgaver.
- Det tilbyder en grรฆnseflade til udviklingping tilpassede opgaver.
- Du kan nemt kalde Ant fra kommandolinjen, hvilket muliggรธr integration med gratis og kommercielle IDE'er.
- Du behรธver kun en JVM, sรฅ den kรธrer alle steder, hvor en JVM er tilgรฆngelig.
- Apache Ant er et open source-bibliotek, som giver brugerne mulighed for at fรฅ adgang til kildekoden og reproducere den.
- Apache Ant er et cross-platform vรฆrktรธj, der giver dig mulighed for at hรฅndtere Java klassesti og filmappestruktur pรฅ en overkommelig mรฅde.
- Apache Ant er let at udvide med Java og andre programmeringssprog.
- Apache Ant tilbyder indbygget understรธttelse af J2EE-udvikling, sรฅsom EJB-kompilering og -pakning.
- Du kan bruge det til et lille personligt projekt sรฅvel som til et stort softwareprojekt eller en hjemmeside.
Ant parres ofte med en testrunner og en server for kontinuerlig integration. JUnit for testlaget, Jenkins for planlagte byggeri, og bruger Apache Ant med Selenium til automatisering af browsertests. Rapporter, der produceres under en build, kan gengives med Jasper Rapporter.













