2012-05-22 15 views
8

Come aggiungere a classpath tutte le classi dall'insieme di directory?Come aggiungere a classpath tutte le classi dall'insieme di directory in formica?

Ho seguente:

class.dirs = lib1dir, lib2dir, lib3dir

ci sono classi in queste directory.
È possibile aggiungere tutte le classi in queste directory a classpath?

Qualcosa di simile:

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

o

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

Ma questo esempio non funziona, ovviamente.

risposta

12

È possibile impostare un percorso per includere tutti i file .class dal tuo directory specifiche:

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

Tuttavia, se si desidera utilizzare questo percorso come un percorso di classe, è sufficiente fare riferimento alle cartelle principali, altrimenti si otterrà ClassNotFoundError s come i nomi dei pacchetti si traducono in directory:

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

quindi fare riferimento il percorso per la sua ID quando si utilizza (ad esempio per classpath):

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

Non conosco i nomi di tutte le directory libdirs. Saranno specificati nella proprietà class.dirs. –

+0

In questo caso dovresti dare un'occhiata al [compito '' '] (http://ant-contrib.sourceforge.net/tasks/tasks/for.html) da ant.contrib. Dovrai usare [task variabili] (http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) invece di 'property's per costruire la stringa di percorso nelle iterazioni' For' – Attila

Problemi correlati