ant mapper

ant - Pathconvert con nombres de archivo relativos



mapper (3)

En la carpeta, src, tengo un conjunto de subcarpetas con el código fuente de Java:

/a/A.java

/a/b/B.java

/a/b/c/C.java

Necesito una propiedad con el siguiente valor:

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

Intenté 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!


Prueba este:

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

(aquí N - Número de directorios para eliminar (debe ser un número positivo))

o esto: después de una parte de su código, trate la lista de archivos a través del

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

Espero que esta ayuda =)


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 . Luego use eso como el atributo 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>


Solo en caso de que alguien necesite obtener rutas de archivos relativas de recursos y asignarlas a las rutas URL en consecuencia, entonces funciona tanto en Windows como en * 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>