2012-05-22 21 views
8

Dizin kümesinden tüm sınıfları sınıf yoluna eklemek nasıl? Ben özelliği aşağıdakilere sahipTüm sınıfları karıncadaki dizin kümesinden sınıflara nasıl ekleyebilirsiniz?

:

lib3dir

class.dirs = lib1dir, lib2dir, şu dizinlerden sınıfları vardır.
Bu dizinlerin altındaki tüm sınıfları sınıf yoluna eklemek mümkün mü? gibi

şey:

<classpath> 
    <dirset dir="${root.dir}" includes="${class.dirs}/**/*.class"/> 
</classpath> 

veya

<classpath> 
    <pathelement location="${class.dirs}" /> 
</classpath> 

Ama bu örnek tabii ki çalışmaz.

cevap

12

Size özel dizinleri tüm .class dosyaları dahil etmek için bir yol ayarlayabilirsiniz: Bir sınıf yolunda olarak bu yolu kullanmak istiyorsanız

<path id="mypath"> 
    <fileset dir="${root.dir}"> 
    <include name="lib1dir/**/*.class lib2dir/**/*.class lib3dir/**/*.class"/> 
    </fileset> 
</path> 

Ancak, yalnızca kök klasör başvurmak gerekir

: (sınıfyolundan için örneğin) kullanırken

<path id="build.classpath"> 
    <dirset dir="${root.dir}"> 
    <include name="lib1dir lib2dir lib3dir"/> 
    </dirset> 
</path> 

Sonra onun kimliğiyle yolunu başvuru: paket isimleri dizinlere çevirmek olarak aksi takdirde ClassNotFoundError s alacak

<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" /> 
+0

Tüm libdirs dizinlerinin adlarını bilmiyorum. Class.dirs özelliğinde belirtilecekler. –

+0

Bu durumda ant.contrib'den ['For' görevi] 'ne (http://ant-contrib.sourceforge.net/tasks/tasks/for.html) bir göz atmalısınız. 'For' yinelemelerinde yol dizesini oluşturmak için 'property's yerine [değişken görevleri] (http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) kullanmanız gerekecektir. – Attila

İlgili konular