Pathconvert с относительными именами файлов - PullRequest
6 голосов
/ 28 ноября 2011

В папке src у меня есть набор подпапок с исходным кодом Java:

/ a / A.java

/ a / b / B.java

/ A / B / C / C.java

Мне нужно свойство со следующим значением:

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

Я попробовал следующее:

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

но в результате я получаю следующее значение:

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

Как я могу достичь того, чего хочу? Любой вклад приветствуется!

Ответы [ 3 ]

8 голосов
/ 28 ноября 2011

Для этого вы можете использовать map параметр pathconvert .

Сначала получите полный путь к каталогу src, добавив его путь к значению свойства basedir,Затем используйте это как атрибут from вашей карты.

<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>
2 голосов
/ 03 августа 2012

На всякий случай, если кому-то нужно получить относительные пути к файлам ресурсов и сопоставить их с путями URL-адресов, соответственно, это работает как в Windows, так и в * nix, решение:

<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>
0 голосов
/ 28 ноября 2011

Попробуйте либо это:

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

(здесь N - Количество каталогов для удаления (должно быть положительным числом))

или это: после того, как часть вашего кода обрабатывает список файлов через

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

Надеюсь, эта помощь =)

...