Ant Копирование пустых каталогов - PullRequest
7 голосов
/ 20 февраля 2011

Я все еще очень плохо знаком с ant и, хотя я знаю coldfusion, я не очень разбираюсь в java-соглашениях, но я знаю, что ant построен с использованием java-соглашений.При этом я работаю над процессом ant, чтобы скопировать проект во временную папку, изменить некоторый код в проекте и затем переместить временный каталог на FTP.Я пытаюсь исключить все мои файлы git, eclipse и ant из копии, чтобы моя платформа тестирования не была загромождена.Я установил цель, чтобы сделать копию, но похоже, что Ant не только игнорирует мои исключения (которые, я уверен, я написал неправильно), но он также копирует каталоги и файлы верхнего уровня.Нет рекурсивной копии.Моя текущая цель:

<target name="moveToTemp" depends="init">
    <delete dir="./.ant/temp" />
    <mkdir dir="./.ant/temp" />
    <copy todir="./.ant/temp">
        <fileset dir=".">
            <include name="*" />
            <exclude name=".*/**" />
            <exclude name=".*" />
            <exclude name="build.xml" />
            <exclude name="settings.xml" />
            <exclude name="WEB-INF/**" />
        </fileset>
        <filterset>
            <filter token="set(environment='design')" value="set(environment='testing')" />
        </filterset>
    </copy>
</target>

Я знаю, что не правильно делаю свои исключения, но я не знаю, что я делаю с ними неправильно.Я вижу двойные звездочки (**), которые постоянно используются в Ant, но я не могу понять,

1 Ответ

7 голосов
/ 20 февраля 2011

По умолчанию набор файлов Ant будет (рекурсивно) включать все файлы в указанном каталоге, что эквивалентно:

<include name="**/*" />

Это неявное включение. Если вы включаете включение, оно переопределяет неявное.

Ваше включение

<include name="*" />

Говорит, ' соответствует любому файлу в каталоге наборов файлов ', но это исключает обход подкаталогов, поэтому ваша проблема. Копируются только файлы и каталоги верхнего уровня.

См. Шаблоны в документации Ant для задач на основе каталогов: ** соответствует любому дереву каталогов (ноль или более каталогов).

В вашем случае вы должны иметь возможность просто удалить «включить», чтобы применить неявное «включить все».

Предлагаем вам также исследовать задачу defaultexcludes , которая позволяет вам один раз настроить подобные вещи для всего проекта.

...