2012-05-22 13 views
8

¿Cómo agregar a classpath todas las clases del conjunto de directorios?¿Cómo agregar a classpath todas las clases del conjunto de directorios en hormiga?

He siguiente propiedad:

class.dirs = lib1dir, lib2dir, lib3dir

Hay clases bajo estos directorios.
¿Es posible agregar todas las clases en estos directorios a classpath?

Algo así como:

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

o

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

Pero este ejemplo no funciona, por supuesto.

Respuesta

12

Puede configurar una ruta para incluir todos los archivos .class de sus directorios específicos:

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

Sin embargo, si desea utilizar este camino como ruta de clases, sólo es necesario hacer referencia a las carpetas raíz, de lo contrario obtendrá ClassNotFoundError s como los nombres de los paquetes se traducen en directorios:

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

después hacer referencia a la trayectoria por su id cuando se utiliza (por ejemplo, para la ruta de clase):

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

No sé los nombres de todos los directorios libdirs. Se especificarán en la propiedad class.dirs. –

+0

En ese caso, debería echar un vistazo a la tarea ['For'] (http://ant-contrib.sourceforge.net/tasks/tasks/for.html) de ant.contrib. Tendrá que usar [tareas variables] (http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) en lugar de 'property's para construir la cadena de ruta en las iteraciones' For' – Attila

Cuestiones relacionadas