Как создать каталоги, указанные картографом в Ant - PullRequest
2 голосов
/ 11 февраля 2009

С учетом набора файлов

<fileset id="myFiles" dir=".">
    <include name="**/*.file"/>
</fileset>

Как создать подкаталог для каждого файла в наборе, названный в честь имени файла без расширения?

Например, с учетом файловой папки A / X.file и папки A / folderB / Y.file я хочу создать папку каталогов A / X и папку A / folderB / Y

Ответы [ 3 ]

3 голосов
/ 22 июня 2009

Задача ant touch поддерживает создание файлов, родительских каталогов и сопоставление имен файлов, поэтому может использоваться для достижения этой цели:

  <target name="mkdirs">
    <touch mkdirs="true">
      <fileset dir="the_dir"/>
      <mapper type="glob" from="*.file" to="the_dir/*/.tmp" />
    </touch>
    <delete>
      <fileset dir="the_dir" includes="**/.tmp"/>
    </delete>
  </target>

Это создает временные файлы в целевых каталогах (создавая каталоги, если они не существуют), а затем удаляет временные файлы, оставляя нужные каталоги.

1 голос
/ 11 февраля 2009

Вы будете использовать для задачи для итерации в вашем списке файлов. Но я не встречал в Ant никакой утилиты типа подстроки, которую можно использовать для удаления расширения и создания каталога. Выполните поиск этой утилиты, если ее там нет, вам нужно реализовать задачу Ant для этого.

0 голосов
/ 11 февраля 2009

Извините, что отвечаю на мой вопрос. Если кто-то не знает обратного, у ANT нет возможности создать каталоги (например, используя mkdir) относительно записей в наборе файлов.

Ant-Contrib содержит полезные для циклических задач, как предполагает Бхушан, которые могут выполнять такие задачи.

У меня были некоторые вещи получше, так что в конце я просто написал пакетный файл, вызываемый задачей ANT (прикладные задачи могут повторяться в наборах файлов).

<apply executable="cmd" failonerror="1">
    <arg value="/c"/>
    <arg line="build\tools\makeRelDir.bat"/>
    <fileset dir=".">
        <include name="**/*.file"/>
    </fileset>
</apply>

где командный файл делает это: mkdir% ~ dp1% ~ n1

(Почему так сложно сделать что-то простое в ANT? Я что-то упустил?)

...