Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 2. Udviklingsmiljø | næste |
Når du skal til at lave større og mere komplekse softwaresystemer, så vil du opdage at de består af mange forskellige delkomponenter. Delkomponenter vil i de fleste tilfælde være softwaremoduler med bestemte versionsnumre, men det kan også være brugervejledninger eller datafiler, som er knyttet til det pågældende softwaresystem.
Den proces at sammensætte komponenter så de udgør et softwaresystem kaldes for konfigurering og kan være en omfattende og ret så kedelig arbejdsopgave at udføre manuelt når man skal holde styr på 117 forskellige filer med bestemte versionsnumre og deres indbyrdes afhængigheder.
Heldigvis findes der værktøjer som er skræddersyet til konfigureringsstyring og vi vil i dette afsnit beskrive et værktøj, der er møntet specielt mod konfigurering af Java-softwaresystemer.
Ant er et Java-baseret værktøj. Ant kan hentes fra: http://jakarta.apache.org/ hvor man desunden kan finde yderligere dokumentation og information.
TODO...skriv om motivationen for nedenstående layout /jk
projektnavn Al projektrelateret data projektnavn/build Oversatte class-filer, ressourcefiler og billeder projektnavn/dist Binær distribution af softwaresystemet inkl. manualer osv. projektnavn/docs Al dokumentation projektnavn/docs/api JavaDoc-genereret HTML af din kode projektnavn/lib Eksterne jar-filer, som anvendes i projektet projektnavn/log Logfiler projektnavn/src Kildetekst, ressourcefiler og billeder projektnavn/test/lib Eksterne jar-filer, som anvendes til test projektnavn/test/report Testrapporter projektnavn/test/src Kildetekst relateret til test af softwaresystemet
Nedenstående er vist et eksempel på en opsætningsfil til Ant som benytter ovenstående layout. For at anvende build.xml skal man kopiere build.xml til projekt katalog som man har valgt til dette project. Man kan benytte:
ant init til at oprette ovenstående katalog struktur
ant compile til at oversætte kildeteksten
ant dist til at oprette en jar fil med klasse filerne
ant clean sletter katalogerne dist og build
ant doc til at generer javadoc. Du til skal dog erstatte dk.cmm.* med dine egne pakker
Man kan utroligt mange forskellige ting med Ant. Lige fra at komplilere sin kildetekst, til at køre java-programmer, til test, til ftp med mere. I stedet for at lave sine egne scripts kan det anbefales at man ser på dokumentationen til Ant og finder den rette task således at man har samlet projektets opsætning på et sted.
<project name="antEksempel" default="compile" basedir="."> <description> Eksempel paa Ant build.xml </description> <property name="name" value="antEksempel"/> <property name="packages" value="dk.cmm.*"/> <property name="build" value="build"/> <property name="dist" value="dist"/> <property name="docs" value="docs"/> <property name="api" value="${docs}/api"/> <property name="log" value="log"/> <property name="src" value="src"/> <property name="lib" value="lib"/> <property name="test" value="test"/> <property name="testlib" value="${test}/lib"/> <property name="testreport" value="${test}/report"/> <property name="testsrc" value="${test}/src"/> <target name="init"> <tstamp/> <mkdir dir="${build}"/> <mkdir dir="${dist}"/> <mkdir dir="${docs}"/> <mkdir dir="${api}"/> <mkdir dir="${log}"/> <mkdir dir="${lib}"/> <mkdir dir="${src}"/> <mkdir dir="${test}"/> <mkdir dir="${testlib}"/> <mkdir dir="${testreport}"/> <mkdir dir="${testsrc}"/> </target> <path id="classpath"> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </path> <target name="compile" depends="init" description="compile the source " > <javac srcdir="${src}" destdir="${build}" classpathref="classpath"/> </target> <target name="dist" depends="compile" description="Generates a jar file" > <jar jarfile="${dist}/${appName}-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> <target name="doc" description="generates api documentation"> <javadoc packagenames="${packages}" destdir="${api}" sourcepath="src"/> </target> </project>