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>