2011-11-28 8 views
6

En carpeta, src, tengo un conjunto de subcarpetas con código fuente de Java:Pathconvert con nombres de archivos relativos

/a/A.java

/a/b/B.java

/a/b/c/C.java

necesito una propiedad con el valor siguiente:

src/a/A.java,src/a/b/B.java,src/a/b/c/C.java 

he intentado lo siguiente:

<pathconvert property="list-of-files"> 
    <globmapper from="*" to="src/*"/> 
    <fileset dir=${src-folder}/> 
</pathconvert> 

pero termino con el siguiente valor en mi propiedad:

src/full/path/to/folder_a/a/A.java,src/full/path/to/folder_a/a/b/B.java,src/full/path/to/folder_a/a/b/c/C.java 

¿Cómo puedo lograr lo que quiero? Cualquier entrada es apreciada!

Respuesta

8

Puede usar el parámetro map de pathconvert para esto.

Primero obtenga la ruta completa a su directorio src agregando su ruta al valor de la propiedad basedir. A continuación, utilícelo como el atributo from de su mapa.

<property name="src.dir" value="${basedir}${file.separator}${src-folder}"/> 
<pathconvert property="list-of-files"> 
    <map from="${src.dir}" to="src"/> 
    <fileset dir="${src-folder}"/> 
</pathconvert> 
+1

Genial, esto funciona. ¡Gracias! – Liz

+1

También puede obtener la ruta absoluta con ubicación en lugar de valor: '' –

0

Prueba cualquiera éste:

<pathconvert property="list-of-files"> 
    <globmapper from="*" to="src/*"/> 
    <cutdirsmapper dirs="N"/> 
    <fileset dir=${src-folder}/> 
</pathconvert> 

(aquí N - Número de directorios a la tira (debe ser un número positivo))

o esto: después pedazo de su lista de regalo código -de-archivos a través de la esperanza

<mapper type="flatten"/> 
<flattenmapper/> 

esta ayuda =)

+0

Desafortunadamente ninguno de estas obras No puedo usar la primera alternativa porque el nuber "N" no es constante en mis compilaciones. Y la segunda alternativa elimina * todas las carpetas y me deja con solo una lista de archivos Java. Así que termino con: A.java, B.java, C.java que no es lo que quiero. – Liz

2

Sólo en caso de si alguien necesita para obtener las rutas de archivo relativas de recursos y asignarlos a las rutas de URL en consecuencia, por lo que funciona tanto en Windows y * nix la solución es:

<pathconvert dirsep="/" pathsep=";" property="css.files.list"> 
    <map from="${basedir}/" to="" /><!-- This is the trick. Remove slash to make path absolute. --> 
    <fileset dir="." includes="${src.dir}/**/*.css" /> 
</pathconvert> 
Cuestiones relacionadas