Apache ANT Tutorial: Hva er Ant Build Tool? Eksempel
โก Smart oppsummering
Apache ANT er en Java basert byggeverktรธy som automatiserer kompilering, testing, pakking og distribusjon gjennom en XML-byggefil. Denne artikkelen definerer verktรธyet, traces dens historie, dekker Windows installasjon, forklarer prosjektstrukturen og sammenligner den med Maven og Gradle.

Hva er et byggeverktรธy?
Et byggeverktรธy er et programmeringsverktรธy som brukes til รฅ bygge en ny versjon av et program. Den automatiserer opprettelsen av et kjรธrbart program fra hvilken som helst kildekode.
Uten et byggeverktรธy ville en utvikler kompilere hver kildefil manuelt, kopiere ressurser, kjรธre testpakken og pakke resultatet av hver endring. Et byggeverktรธy registrerer disse trinnene รฉn gang og gjentar dem identisk pรฅ hver maskin.
Hva er Apache Ant?
Apache Ant er en Java-basert kommandolinjeverktรธy for bygging Java applikasjoner med full portabilitet av pure Java kode. Det lar utviklere ta i bruk smidige prinsipper og testdrevet utvikling for รฅ automatisere repeterende utviklingsoppgaver som รฅ generere dokumentasjon. Ant er et akronym for Another Neat Tool.
Som diagrammet viser, leser Ant en byggefil, bestemmer rekkefรธlgen pรฅ mรฅlene i den, og kjรธrer deretter de individuelle oppgavene som kompilerer, kopierer, tester og pakker applikasjonen.
Hva brukes Apache Ant Build-verktรธyet til?
Her er viktige fordeler med รฅ bruke byggeverktรธyet:
- Et byggeverktรธy lar deg automatisere spesifikke, repeterende oppgaver som รฅ kompilere kildekoden, kjรธre programvaretester og opprette filer for programvaredistribusjon.
- Byggverktรธy kjรธrer stort sett uten et grafisk brukergrensesnitt.
- Det hjelper deg รฅ konvertere kildekode til kjรธrbar kode.
- Den tilbyr et alternativ for รฅ kompilere en fil pรฅ nytt bare hvis det er nรธdvendig.
- Det lar deg kompilere et stort antall filer pรฅ relativt kort tid.
- To svรฆrt populรฆre byggeverktรธy som brukes av Java utviklerne er Apache Maven og Ant.
Historien til Apache Ant
Nรฅ skal vi lรฆre om historien til byggeverktรธyet Apache Ant.
Her er viktige historiske landemerker fra Apache Ant-verktรธyet:
- James Duncan Davidson opprettet Ant i juli 2000.
- Den ble opprinnelig brukt til รฅ bygge Tomcat og kom som et innebygd produkt i Tomcat-distribusjonssettet.
- I mai 2014 ble Apache Ant versjon 1.9.4 utgitt med mange avanserte funksjoner.
- 1.10.x-linjen startet i 2017 og er fortsatt den aktivt vedlikeholdte grenen.
- Versjon 1.10.17 ble utgitt 10. april 2026 og krever minimum Java 8 kjรธretid.
Funksjoner av Apache Ant
Her er de viktigste funksjonene i Apache Ant:
- Det er et รฅpen kildekode-prosjekt.
- Det lar deg kjรธre bygg pรฅ begge Windows og UNIX- eller Linux-systemer.
- Du trenger bare en JVM, ettersom den kjรธrer overalt hvor en JVM er tilgjengelig.
- Den tilbyr et bredt utvalg av forhรฅndsdefinerte oppgaver.
- Det hjelper deg med รฅ kopiere filer fra ett sted til et annet.
- Den tilbyr et grensesnitt for รฅ utvikle tilpassede oppgaver.
- Den lar deg starte bygg fra kommandolinjen, som enkelt integreres med gratis og kommersielle IDE-er.
- Den lar deg distribuere binรฆrfilene til en testserver.
- Den tilbyr en utvidbar arkitektur.
- Den tilbyr bakoverkompatibilitet pรฅ tvers av utgivelser.
Hvordan installere og konfigurere Apache Ant pรฅ Windows
Nรฅ skal vi lรฆre prosessen med รฅ installere Apache Ant pรฅ Windows.
Vi antar at du allerede har lastet ned og installert Java Utviklingssett (JDK) pรฅ datamaskinen din. Sรธrg for at miljรธvariabelen JAVA_HOME er satt til mappen der JDK-en din er installert. Fรธlg trinnene nedenfor for รฅ installere Ant:
Trinn 1) Last ned binรฆrfiler.
Last ned binรฆrfiler fra https://ant.apache.org/bindownload.cgi
Trinn 2) Pakk ut filer.
Pakk ut denne zip-filen til et passende sted, for eksempel c:\mappen, ved รฅ bruke WinZip, WinRAR, 7-Zip, eller et lignende verktรธy.
Trinn 3) Lag en miljรธvariabel.
Opprett en miljรธvariabel for ยซANT_HOMEยป og tilordne verdien av variabelen til plasseringen av Ant-mappen.
- Hรธyreklikk pรฅ Denne PC-en-ikonet.
- Klikk pรฅ Egenskaper.
Trinn 4) Gรฅ til systeminnstillinger.
Klikk pรฅ "Avanserte systeminnstillinger".
Trinn 5) Pรฅ systemegenskaper,
klikk pรฅ fanen ยซAvansertยป.
Trinn 6) Finn miljรธvariablene.
Klikk pรฅ knappen ยซMiljรธvariablerโฆยป.
Trinn 7) Opprett en ny variabel.
Klikk pรฅ "Ny" for รฅ opprette en ny brukervariabel.
Trinn 8) Skriv inn variabeldetaljene.
Skriv inn detaljene for den nye brukervariabelen.
- Skriv inn variabelnavnet som ANT_HOME.
- Skriv inn variabelverdien som mappen der Ant ble pakket ut, for eksempel C:\apache-ant-1.10.17.
- Klikk pรฅ โOKโ -knappen.
Trinn 9) Variabel opprettet.
Klikk pรฅ โOKโ -knappen.
Trinn 10) Lukk skjermen.
Klikk pรฅ "OK" for รฅ lukke skjermen.
๐ก Tips: ANT_HOME mรฅ peke pรฅ selve installasjonsmappen, ikke pรฅ bin-mappen inni den. Legg deretter til %ANT_HOME%\bin til Path-variabelen, slik at ant-kommandoen gjenkjennes fra enhver katalog.
Du kan bekrefte en vellykket Ant-installasjon ved รฅ typing kommandoen ยซant -versionยป i ledeteksten.
Du vil se fรธlgende skjerm:
Eksempel pรฅ Apache ANT
Byggefilen nedenfor definerer et enkelt mรฅl kalt hello som skriver ut en melding. Prosjektelementet deklarerer et navn og et standardmรฅl, slik at Ant vet hva som skal kjรธres nรฅr det ikke er noe mรฅl navngitt pรฅ kommandolinjen.
<?xml version="1.0"?> <project name="HelloWorld" default="hello" basedir="."> <target name="hello"> <echo>Hello, World</echo> </target> </project>
Lagre denne filen som ยซbuild.xmlยป, og fรธlg deretter disse to trinnene:
- ร pne ledeteksten og gรฅ til mappen som inneholder build.xml.
- Kjรธr
ant hello, eller bareant, fordi hello er deklarert som standardmรฅl. For รฅ bruke et annet filnavn, kjรธrant -f mybuild.xml hello.
Utgang:
Buildfile: C:\projects\demo\build.xml
hello:
[echo] Hello, World
BUILD SUCCESSFUL
Total time: 0 seconds
ANT-prosjektets struktur
ANT-prosjektets struktur
Som strukturdiagrammet viser, vil hver build inneholde tre noder:
- Prosjekt
- Target
- Oppgave
Prosjekt
Alt inne i byggefilen i Apache ANT er under et prosjekt.
Attributter:
- Navn: Navnet pรฅ prosjektet.
- Basert adresse: Dette er katalogen som alle stiene skal beregnes fra. Dette kan overstyres ved รฅ bruke egenskapen ยซbasedirยป.
- Misligholde: Hjelper deg med รฅ definere standardmรฅlet for dette prosjektet. Hvis det ikke er gitt noe mรฅl, vil Ant utfรธre standardmรฅlet.
Target
Et mรฅl er et sett med oppgaver som er definert for รฅ nรฅ en bestemt tilstand i byggeprosessen.
Attributter:
- Navn: Navn pรฅ mรฅlet (obligatorisk).
- Description: Description av mรฅlet.
- Avhenger av: Hvilket mรฅl dette nรฅvรฆrende mรฅlet avhenger av.
- If: Utfรธrer bare mรฅlet hvis en verdi er angitt for en mรฅlegenskap.
- Med mindre: Utfรธrer bare mรฅlet hvis egenskapsverdien ikke er angitt.
Oppgaver
En oppgave er et stykke kode som kan kjรธres. Oppgaver har flere argumenter eller attributter.
Det generelle metodemรธnsteret for รฅ skrive en oppgave er:
<name attribute1="value" attribute2="value2"โฆ/>
Du kan enten bruke en innebygd oppgave, eller du kan lage din egen oppgave. Tabellen nedenfor viser oppgavene som vises i nesten alle Java byggefilen.
| Oppgave | Formรฅl | Typiske attributter |
|---|---|---|
| savner | Skriv ut en melding til konsollen | melding |
| mkdir | Lag en katalog | dir |
| slette | Fjern filer eller mapper | dir, inkluder tomme mappemapper |
| Javac | Kompilere Java kildefiler | srcdir, destdir, includeantruntime |
| jar | Pakke klasser inn i et jar-arkiv | destfile, basedir |
| kopiere | Kopier filer mellom steder | fil, tildir |
| junit | Kjรธr enhetstester | haltonfailure, utskriftssammendrag |
Komplett build.xml-eksempel med flere Targets
En realistisk byggefil kjeder flere mรฅl sammen. depends-attributtet garanterer rekkefรธlgen, sรฅ Ant renser utdatamappen, kompilerer kildekoden og bygger fรธrst deretter 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>
Utgang:
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 byggeverktรธy dominerer Java รธkosystem, og hver enkelt tar forskjellig standpunkt til hvor mye struktur de skal pรฅlegge.
| Parameter | Apache Ant | Apache Maven | Gradle |
|---|---|---|---|
| Bygg skriptformat | XML | XML | Groovy eller Kotlin DSL |
| Tilnรฆrming | Prosedyremessig, du definerer hvert trinn | Deklarativ, konvensjon fremfor konfigurasjon | Deklarativ med skriptutvidelser |
| Avhengighetsstyring | Ikke innebygd, lagt til via Apache Ivy | Innebygd med sentralt arkiv | Innebygd, Maven-kompatibel |
| Prosjektstruktur | Helt gratis | Fast standardoppsett | Konvensjonsbasert, men overstyrbar |
| Trinnvise bygg | Begrenset | Begrenset | Ja, med en byggebuffer |
| Lรฆringskurve | Lavt for XML-brukere | Moderat | Brattere, krever DSL |
| Passer best for | Eldre prosjekter og svรฆrt tilpassede bygg | standard Java prosjekter | Stor multimodul og Android prosjekter |
Ant er fortsatt det pragmatiske valget nรฅr en konstruksjon ikke passer til et standardoppsett, eller nรฅr et eksisterende prosjekt allerede er avhengig av hรฅndskrevne mรฅl.
Beste fremgangsmรฅter for bruk av Apache Ant
Her er noen gode fremgangsmรฅter for bruk av Apache Ant.
- Du bรธr automatisere byggnummerering ved รฅ bruke egenskapsfiler.
- Implementer en konfigurerbar bygging ved hjelp av standard- og byggeegenskapsfiler. Disse filene lar deg lagre egenskaper som definerer dataene for byggeprosessen, for eksempel kompilatorversjon og optimaliseringsinnstillinger.
- Du kan gjenbruke forhรฅndsbygde biblioteker ved รฅ bruke bibliotekets eiendomsfiler.
- Gi hvert mรฅl et beskrivelsesattributt, slik at
ant -projecthelpviser et brukbart sammendrag av bygget. - Hold det rene mรฅlet separat, og slett aldri en katalog som ogsรฅ inneholder kildefiler.
Fordeler med รฅ bruke Apache Ant
Her er fordelene med รฅ bruke Apache Ant:
- Ant er plattformnรธytral, sรฅ det hjelper deg med รฅ administrere plattformsentriske egenskaper som filseparatorer.
- Ant lar deg utfรธre plattformspesifikke oppgaver, for eksempel รฅ endre den endrede tiden til en fil ved hjelp av kommandoen ยซtouchยป.
- Ant-skript skrives med vanlig XML, sรฅ hvis du allerede er kjent med XML, vil du raskt kunne lรฆre Ant.
- Ant tilbyr en stor liste med forhรฅndsdefinerte oppgaver.
- Den tilbyr et grensesnitt for utviklingping tilpassede oppgaver.
- Du kan enkelt starte Ant fra kommandolinjen, noe som tillater integrering med gratis og kommersielle IDE-er.
- Du trenger bare en JVM, sรฅ den kjรธrer overalt hvor en JVM er tilgjengelig.
- Apache Ant er et รฅpen kildekode-bibliotek som lar brukere fรฅ tilgang til kildekoden og reprodusere den.
- Apache Ant er et verktรธy pรฅ tvers av plattformer som lar deg hรฅndtere Java klassesti og filkatalogstruktur pรฅ en rimelig mรฅte.
- Apache Ant er lett รฅ utvide med Java og andre programmeringssprรฅk.
- Apache Ant tilbyr innebygd stรธtte for J2EE-utvikling, for eksempel EJB-kompilering og -pakking.
- Du kan bruke den til et lite personlig prosjekt sรฅ vel som til et stort programvareprosjekt eller nettsted.
Ant kobles ofte sammen med en testkjรธrer og en kontinuerlig integrasjonsserver. Se JUnit for testlaget, Jenkins for planlagte bygg, og bruker Apache Ant med Selenium for automatisering av nettlesertester. Rapporter som produseres under en bygging kan gjengis med Jasper rapporterer.













