İşte, elde etmeye çalıştığım şeyin çok basitleştirilmiş bir sürümüdür. İki dizinim var, Directory1
ve Directory2
. Her iki dizin de Java kaynak dosyaları içerir. Directory2
'daki bazı dosyalar, Directory1
'daki dosyalarla tam olarak aynı sınıf adına sahip olabilir.Ant javac görevini, hedef dizinde sınıf dosyasının üzerine yazmak için nasıl zorlanır?
Karınca kullanarak dosyalar, Directory1
'dan itibaren Directory2
'dan itibaren CompileDirectory
adlı bir dizine derlenir. Directory2
'daki dosyaların derlenmesini ve derlenmiş sınıf dosyalarının üzerine Directory1
'dan yazılmasını istiyorum. Bununla birlikte, karınca, tamamen aynı sınıf ismine sahip sınıfları görmezden gelir.
Dizin yapısı
$ ls -R
.:
build.xml CompileDirectory Directory1 Directory2
./CompileDirectory:
./Directory1:
A.java
./Directory2:
A.java
Build.xml
<project name="TestProject" default="build" basedir=".">
<target name="build" depends="javac1, javac2" />
<target name="javac1">
<javac srcdir="${basedir}/Directory1" destdir="CompileDirectory" includeantruntime="false"/>
</target>
<target name="javac2">
<javac srcdir="${basedir}/Directory2" destdir="CompileDirectory" includeantruntime="false"/>
</target>
</project>
Ant çalıştırmak
$ ant -buildfile build.xml
Buildfile: ...(path).../build.xml
javac1:
[javac] Compiling 1 source file to ...(path).../CompileDirectory
javac2:
build:
BUILD SUCCESSFUL
Total time: 0 seconds
görülebileceği gibi, javac2
- İşte
Java programını çalıştırdığımda, sınıf dosyasının Directory1'den olduğunu görüyorum.
$ cd CompileDirectory/
$ java A
I am class A from directory 1
CompileDirectory
sınıf dosyası Directory2
kaynak dosyayı derlemek ve üzerine yazmak javac2
hedef javac
görevi zorlamak için bir yolu var mı?