Blir inte riktigt klok på Ant, har några filer i två olika paket som beror på varandra som jag inte lyckas få Ant att kompilera. Mappstrukturen är:
./ (här finns bara en javafil som sparkar igång allt än så länge)
./Communication/
./GUI/
Några av filerna i Communication har beroende på filer i GUI och tvärtom, att kompilera det manuellt med javac är ingaproblem, står jag i roten och ger:
javac -cp .:GUI Communication/*.java
javac -cp .:Communication GUI/*.java
så kompileras allt utan problem.
I Ant har jag lagt upp delarna så här:
<property name="build.dir" location="./build/"/>
<property name="jar.dir" location="./release/"/>
<property name="GUI.dir" location="./GUI/"/>
<property name="Communication.dir" location="./Communication/"/>
<property name="GUI.Images.dir" location="GUI/Images/"/>
<target name="clean" description="remove intermediate files">
<delete dir="${build.dir}"/>
<delete dir="${jar.dir}"/>
</target>
<target name="all" depends="prepare, compile"/>
<target name="prepare">
<tstamp/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${jar.dir}"/>
</target>
<target name="compile" depends="prepare,GUI,Communication" description="Main">
<javac srcdir="." destdir="${build.dir}">
<classpath refid="project.classpath"/>
</javac>
</target>
<target name="GUI" description="GUI components">
<javac srcdir="${GUI.dir}" destdir="${build.dir}">
<classpath location="./"/>
<classpath location="${Communication.dir}"/>
</javac>
</target>
<target name="Communication" description="Communication components">
<javac srcdir="${Communication.dir}" destdir="${build.dir}">
<classpath location="./"/>
<classpath location="${GUI.dir}"/>
</javac>
</target>
Detta fungerar dock inte, javac klagar då på att paketet GUI resp. Communication ej existerar beroende på vilken target som kompileras och således får jag en drös med kompileringsfel. Någon som har en aning om hur jag löser detta? Kompilerar jag något av paketen manuellt och sedan kör med Ant så fungerar det, men då får jag en massa classfiler bland mina javafiler vilket jag inte vill ha. Samt att jag måste kompilera om manuellt om jag gör ändringar i paketet, annars jobbar Ant mot gammal kod.
Jag har provat att sätta beroenden på Communication och GUI med depends="", men det fungerar inte, och att låta båda bero på varandra ger en rundgång som Ant ej accepterar.