2010-12-09 24 views
7

Estoy seguro de que esto ya se ha preguntado antes o es bastante sencillo. Pero por alguna razón, no puedo hacer que funcione. Quiero usar hormiga para copiar el ${build.classpath} (que contiene una lista de frascos separados por dos puntos) al ${output.dir}/myapp/WEB-INF/lib.Ant copy classpath jar a un directorio

tengo unas pocas cosas en este momento y que no parece funcionar:

<copy toDir="${output.dir}/myapp/WEB-INF/lib"> 
    <fileset file="${build.classpath}" /> 
</copy> 

que trata a toda la ruta de clase como un archivo. ¿Cómo hago que esto funcione?

Respuesta

12

El Manual Hormiga en la tarea de copia contiene la respuesta a su problema. Uno de los fragmentos de ejemplo que proporciona:

Recoge todos los elementos de la configuración CLASSPATH actual en un directorio de destino, aplanando la estructura del directorio.

<copy todir="dest" flatten="true"> 
    <path> 
    <pathelement path="${java.class.path}"/> 
    </path> 
</copy> 
+1

Muchas gracias, debo haber pasado por alto esto de alguna manera. Esto funcionó perfectamente. Copia todo en 'classpath' al directorio de destino. Pero el 'classpath' puede contener directorios o archivos que no son jar, ¿cómo excluyo cualquier cosa que NO sea un archivo jar? –

+0

Reemplace el uso de la ruta de acceso con . –

+1

La parte importante de la respuesta es la opción ** 'flatten =" true "' **. Si no lo configuras, no haré nada. – lucasvc

0

Creo que deberías poner todos tus archivos jar separados por dos puntos en una carpeta raíz. Si no es posible, cree una tarea separada que coloque esos archivos jar en una carpeta (puede ser temporal). Y asigne ${build.classpath} a esa carpeta. Use <fileset dir="${build.classpath}"/> en su cláusula de copia.

Espero, debería ayudar.

1

creo somethink como esto debería funcionar:

<copy todir="${output.dir}/myapp/WEB-INF/lib" verbose="yes" flatten="yes" failonerror="no">  
    <fileset dir="${build.classpath}">  
     <include name="*.jar" />  
    </fileset>  
</copy> 

o con comodín en incluyen: <include name="**/*.jar" />

+1

Disculpa, esto no funciona en absoluto. El 'classpath' contiene una lista de rutas separadas por dos puntos. Lo único que funcionó para mí hasta ahora es la respuesta de 'user268396'. –

Cuestiones relacionadas