Как создать несколько новых символических ссылок, используя Apache Ant из набора файлов? - PullRequest
3 голосов
/ 08 апреля 2011

Задача символической ссылки в ant либо создает одну, записывает существующую, воссоздает существующую или удаляет одну символическую ссылку.Я хочу создать символические ссылки на все файлы в данном каталоге в другом каталоге.

1 Ответ

3 голосов
/ 08 апреля 2011

Самый простой способ добиться этого (с точки зрения кодирования) - с помощью команды antcontrib Для задачи

<for param="file">
  <path>
    <fileset dir="${src.dir}" includes="*"/>
  </path>
  <sequential>

    <basename property="@{file}.basename" file="@{file}">
    <symlink link="${dest.dir}/${@{file}.basename}" resource="@{file}"/>
  </sequential>
</for>

Если вы не хотите использовать зависимость от ant-contrib, вы можете попробовать следующее (Примечание: я вообще не тестировал):

  1. Создать пару ссылок вручную в $ {dest.dir}.
  2. Запустить в ${dest.dir}.

Теперь у вас есть файл свойств шаблона, который вы будете воссоздавать с инструкциями по сборке:

<pathconvert pathsep="${line.separator}" property="file.list">
  <fileset dir="${src.dir}" includes="*"/>
</pathconvert>
<echo message="${file.list}" file="${file-list.file}" append="false"/>

Теперь помассируйте файл с помощью фильтра регулярных выражений

<copy file="${file-list.file}" tofile="${dest-dir}/.link.properties">
  <filterchain>
    <tokenfilter>
      <!-- I leave regex as an exercise to the reader -->
      <replaceregex pattern="..." replace="..." flags="..."/>
    </tokenfilter>
  </filterchain>
</copy>

Наконец, сделайте symlink-воссоздать.

<symlink action="recreate">
  <fileset dir="${dest.dir}" includes=".link.properties"/>  
</symlink>
...