En definert prosess er et av de mest nødvendige, men ofte minst brukte verktøyene i programvareutvikling. Det er av natur en overordnet oppgave som følger med en utviklingsinnsats. En definert byggeprosess sikrer at programvaren i utviklingsprosjektet ditt bygges på nøyaktig samme måte hver gang en build utføres. Etter hvert som byggeprosessen blir mer kompleks - for eksempel med EJB-bygg eller flere oppgaver - blir det mer nødvendig å oppnå en slik standardisering. Du bør etablere, dokumentere og automatisere den nøyaktige serien av trinn så mye som mulig.
Hvorfor trenger jeg en definert byggeprosess?
En definert byggeprosess er en viktig del av enhver utviklingssyklus fordi den hjelper til med å lukke gapet mellom utviklings-, integrasjons-, test- og produksjonsmiljøene. En byggeprosess alene vil øke overføringen av programvare fra et miljø til et annet. Det fjerner også mange problemer knyttet til kompilering, klassesti eller eiendommer som koster mange prosjekter tid og penger.
Hva er maur?
Ant er et plattformuavhengig skriptverktøy som lar deg konstruere byggeskriptene dine på samme måte som "make" -verktøyet i C eller C ++. Du kan bruke et stort antall innebygde oppgaver i Ant uten tilpasning. Noen av de viktigste oppgavene vises i følgende tabell, men forklart mer detaljert i eksemplet som følger.
Her er noen nyttige kommandoer som er bygd i Ant-distribusjonen.
Kommando | Beskrivelse |
---|---|
Maur | Brukes til å utføre en annen maurprosess fra den nåværende. |
Copydir | Brukes til å kopiere en hel katalog. |
Kopier fil | Brukes til å kopiere en enkelt fil. |
Cvs | Håndterer pakker / moduler hentet fra et CVS-depot. |
Slett | Sletter enten en enkelt fil eller alle filene i en spesifisert katalog og underkatalogene. |
Deltree | Sletter en katalog med alle filene og underkatalogene. |
Utfør | Utfører en systemkommando. Når os-attributtet er spesifisert, blir kommandoen bare utført når Ant kjøres på et av de angitte operativsystemene. |
Få | Henter en fil fra en URL. |
Krukke | Krukker et sett med filer. |
Java | Utfører en Java-klasse i den kjørende (Ant) VM eller gafler en annen VM hvis spesifisert. |
Javac | Kompilerer et kildetre i den kjørende (Ant) VM. |
Javadoc / Javadoc2 | Genererer kodedokumentasjon ved hjelp av javadoc-verktøyet. |
Mkdir | Lag en katalog. |
Eiendom | Angir en eiendom (etter navn og verdi), eller sett med egenskaper (fra fil eller ressurs) i prosjektet. |
Rmic | Kjører rmic-kompilatoren for en bestemt klasse. |
Tstamp | Angir egenskapene DSTAMP, TSTAMP og TODAY i det aktuelle prosjektet. |
Stil | Behandler et sett med dokumenter via XSLT. |
Mens andre verktøy er tilgjengelige for å lage programvarebygging, er Ant enkelt å bruke og kan mestres i løpet av få minutter. I tillegg lar Ant deg lage utvidet funksjonalitet ved å utvide noen av klassene. Jeg vil vise denne utvidelsen i et følgende eksempel.
Hva trenger jeg for å bruke Ant?
Du må installere tre komponenter på maskinen din for å kjøre Ant: JDK, XML-parser og Ant (se Ressurser for lenker).
I mange tilfeller er XML-parseren en del av lib-filene distribuert med Servlet runner eller webserveren. Hvis ikke, er den gratis XML-parseren fra java.sun.com tilstrekkelig.
Antinstallasjon består av å laste ned filene, legge til klassebibliotekene på klassestien og legge til Ant-binærene i banen.
Eksempel på scenario
Dette eksempelsscenariet skal hjelpe deg med å vise verdien av Ant og gi innsikt i fordelene og hvordan du kan bruke den.
Fordi en stor del av den nåværende Java-utviklingen er fokusert på serversiden Java, har jeg valgt en server-side-applikasjon for eksemplet. Utviklere som jobber med Java-applikasjoner på serversiden, er vanligvis interessert i kompilering av servlets, distribusjon av JSP-filer og distribusjon av HTML-filer, konfigurasjonsfiler eller bilder.
En vanlig ordning for å gjøre denne bygningen vil innebære utvikling av små skript på plattformsspesifikke språk basert på serverens operativsystem. For eksempel kan en utvikler som arbeider på en NT-maskin lage en batchfil som utfører kompileringsoppgavene og deretter kjører distribusjonen. Imidlertid, hvis produksjonsmiljøet hadde Unix eller Linux, måtte utvikleren omskrive skriptet, og sørge for at skriptene var synkronisert.
OK, vis meg hvordan dette fungerer
Så jeg har forhåpentligvis overbevist deg om behovet for å bruke Ant og vist hvor enkelt det er å installere. Nå skal jeg vise deg hvor enkelt Ant er å bruke ved å gå gjennom et eksempel som utfører enkel kompilering og distribusjon.
Enkel byggeprosess med Ant (simple.xml)
Det er mye å forklare i eksemplet ovenfor. Først bør du forstå strukturen til simple.xml-filen. Det er en godt formatert XML-fil som inneholder en prosjektenhet som består av flere målenheter.
Første linje inneholder informasjon om det samlede prosjektet som skal bygges.
De viktigste elementene i prosjektlinjen er misligholde
og basedir
.
De misligholde
attributt refererer til standardmålet som skal utføres. Fordi Ant er et kommandolinjeverktøy, er det mulig å utføre bare en delmengde av måltrinnene i Ant-filen. For eksempel kunne jeg utføre følgende kommando:
% ant -buildfile simple.xml init
Det vil utføre maur
kommandoen og kjør gjennom simple.xml-filen til i det
målet er nådd. Så i dette eksemplet er standardverdien utplassere
. Ant-prosessen påkalt i følgende linje vil løpe gjennom simple.xml
filen til utplassere
kommandoen er nådd:
% ant -buildfile simple.xml
De basedir
attributt er ganske selvforklarende, da det er basiskatalogen der de relative referansene i build-filen hentes fra. Hvert prosjekt kan bare ha ett basedir
attributt slik at du kan velge å enten inkludere den fullstendige katalogplasseringen eller dele den store prosjektfilen inn i mindre prosjektfiler med forskjellige basedir
attributter.
Den neste linjen av interesse er mållinjen. To forskjellige versjoner vises her:
De mål
elementet inneholder fire attributter: Navn
, hvis
, med mindre
, og avhenger
. Maur krever Navn
attributt, men de tre andre attributtene er valgfrie.
Ved hjelp av avhenger
, kan du stable Ant-oppgavene slik at en avhengig oppgave ikke startes før oppgaven den er avhengig av er fullført. I eksemplet ovenfor starter den rene oppgaven ikke før i det
oppgaven er fullført. De avhenger
attributt kan også inneholde en liste med kommaadskilte verdier som indikerer flere oppgaver som oppgaven i diskusjonen er avhengig av.
De hvis
og med mindre
kommandoer lar deg spesifisere kommandoer som skal utføres enten hvis en bestemt eiendom er satt eller med mindre at eiendommen er satt. De hvis
vil kjøre når eiendomsverdien er satt, og med mindre
vil utføres hvis verdien ikke er satt. Du kan bruke tilgjengelig
kommando for å angi disse egenskapene som vist i følgende eksempel, eller du kan angi dem via kommandolinjen.
De i det
mål fra det enkle eksemplet inneholder fire linjer med eiendom
kommandoer som vist her:
Disse eiendom
linjer kan du spesifisere kataloger eller filer som ofte brukes. En eiendom er et enkelt navneparpar som lar deg referere til katalogen eller filen som en logisk enhet i stedet for en fysisk.
Hvis du vil referere til kildeDir
variabel senere i Ant-filen, kan du bare bruke følgende syntaks for å varsle Ant for å oppnå verdien for denne taggen: $ {sourceDir}
.
To andre kommandoer i ovennevnte buildfil er:
Disse kommandoene brukes til å sikre at det ikke er fremmede filer i outputDir
(eller klasser
katalog når dereferenser som nevnt ovenfor). Den første kommandoen fjerner hele treet som ligger under outputDir
. Den andre kommandoen oppretter katalogen igjen.
Den siste linjen av stor interesse for utvikleren er følgende kompileringslinje:
De javac
kommandoen krever en kildekatalog (inngangsplasseringen til .java-filene) og en destinasjonskatalog (utgangsplasseringen til .classes-filen). Det er viktig å merke seg at alle kataloger enten må eksistere før kjøringen av maur
kommandoen eller opprettes ved hjelp av mkdir
kommando. Ant lager ikke kataloger basert på intuisjon, så du må opprette outputDir
, bruker mkdir
kommandoen før kompileringstrinnet ovenfor.
Etter kompilere
oppgaven er fullført, utplassere
oppgaven vil utføre kopieringen for å flytte alle JSP-filer fra kildekatalogen til en distribusjonskatalog. Ved å bruke copydir
kommandoen, kopierer du hele JSP-katalogen fra ett sted til et annet. Jeg brukte Kopier fil
kommando for å kopiere en enkelt eiendomsfil som en del av build.
Selv om det tok flere linjer å forklare eksemplet, burde det være tydelig at Ant er et brukervennlig verktøy. Ved å bruke denne buildfilen som utgangspunkt, bør du kunne innlemme Ant i utviklingsarbeidet ditt. De maur
kommandoer vist i eksemplet ovenfor har ytterligere funksjonalitet, hvorav noen vil bli diskutert i denne artikkelen, resten overlates til deg sammen med referanser til dokumentasjonen.
Viktige oppgaver
Det overlates til deg å lese gjennom de innebygde oppgavene som er inkludert i Ant-distribusjonen. Se brukerhåndboken i Ressurser for informasjon om hver kommando. Jeg har valgt to vanlige kommandoer som eksempler på tilleggsalternativer tilgjengelig for bygningsadministratoren uten tilpasning.
Kompileringskode (inkludert EJB)
I det enkle eksemplet som ble diskutert tidligere, så du en enkel form for javac
kommando. Nå, hvis du undersøker det mer detaljert, ser du at du kan spesifisere kompilasjonsflaggene som avvikling, feilsøking eller optimalisering, samt filene som vil eller ikke vil bli inkludert i kompileringen.
Du kan bruke inkludere / ekskludere
enheter inne i javac
oppgave å inkludere / ekskludere filer som samsvarer med mønsteret i Navn
attributt fra samlingen. Fra eksemplet ovenfor vil du inkludere filer som finnes i hvilken som helst katalog som slutter på .java, men samtidig vil du ekskludere filer som heter Script.java, med mindre en egenskap bsf.present
er satt til sant.
Du setter inn bsf.present
egenskap ved hjelp av følgende oppgave som søker i klassestien etter klassenavnet som er spesifisert og angir bsf.present
i henhold til søkeresultatene:
De javac
kommandoen inkluderer ikke filer kalt version.txt fra samlingen basert på ekskluder-kommandoen ovenfor.
Genererer javadoc
En annen oppgave som Ant kan hjelpe til med å automatisere er generering av javadoc. Du kan bruke følgende kommando til å generere javadoc:
Pakkene spesifiserer de samlede pakkene som javadoc vil inkludere. De sourcepath
attributtpoeng mot plasseringen av kildefilene. De javadoc
kommandoen inneholder også attributter som lar deg spesifisere tittelen på vinduet og dokumentet. Du kan også inkludere en copyright-melding nederst på hver javadoc-side ved hjelp av bunn
Egenskap.
Kan maur gjøre XYZ?
På dette punktet har du sett noen av de mulige oppgavene i byggeprosessen din som Ant kan automatisere. Disse oppgavene er inkludert utenfor boksen i Ant. Det kan være lurt å tilpasse Ant for å hjelpe deg med å utføre vanskeligere oppgaver, for eksempel å bygge EJB og utføre ekstern konfigurasjonsadministrasjon. Noen av dere vil kanskje øke Ants rapporteringsmuligheter eller konstruere et brukergrensesnitt som kan kjøre Ant-prosessen.
Det enkle svaret på spørsmålet "Kan Ant gjøre XYZ?" er "Ja, men du må kanskje tilpasse det."
Utvide Ant
To maurforlengelser er interessante å diskutere på dette punktet. De har økt rapportering og muligheten til å distribuere kode eksternt ved hjelp av Ant.