Посмотрите на вопрос Как выполнять задачи ANT только для файлов, которые были изменены , и в частности этот ответ , который иллюстрирует использование модифицированного селектора .
Похоже, phpcs занимает либо список файлов и / или каталогов.Он возвращается в каталоги.
Если вы намерены придерживаться указания одного каталога и в нем есть рекурсивный набор phpcs, то вы можете сначала найти целевые файлы (используя измененный селектор) и скопировать во временный каталог.Затем укажите phpcs на этот каталог.Недостатком этого является то, что вы добавляете дисковый ввод-вывод для копии во время сборки.
Возможно, лучше, вы могли бы pathcovert набор файлов, выбранный с использованием модифицированного селектора.Для этого используйте пробел как pathsep
.Это даст вам свойство, значением которого является список целевых файлов, разделенных пробелами.Недостатком этого может быть то, что вы получите слишком длинный список аргументов.
Чтобы ответить на ваш следующий вопрос в комментариях, вот простой пример того, как вы можете использовать pathconvert для созданияразделенный пробелами список файлов и передача их в исполняемый файл (в данном случае команда dir для Windows):
<project default="test">
<target name="test">
<pathconvert property="file.list" pathsep=" ">
<fileset dir="src">
<include name="a.txt"/>
<include name="b.txt"/>
</fileset>
</pathconvert>
<echo message="file.list: ${file.list}"/>
<exec executable="cmd">
<arg value="/c"/>
<arg value="dir"/>
<arg line="${file.list}"/>
</exec>
</target>
</project>
(обратите внимание, что для передачи списка файлов я использовал line
вместо value
в exec
.)
Вот содержимое каталога, из которого выбираются файлы (один не включен):
C:\tmp\ant>dir src
Volume in drive C has no label.
Volume Serial Number is 1773-83D6
Directory of C:\tmp\ant\src
30/11/2011 12:21 <DIR> .
30/11/2011 12:21 <DIR> ..
30/11/2011 12:09 0 a.txt
30/11/2011 12:09 0 b.txt
30/11/2011 12:09 0 c.txt
3 File(s) 0 bytes
2 Dir(s) 435,642,912,768 bytes free
Вот вывод:
C:\tmp\ant>ant
Buildfile: C:\tmp\ant\build.xml
test:
[echo] file.list: C:\tmp\ant\src\a.txt C:\tmp\ant\src\b.txt
[exec] Volume in drive C has no label.
[exec] Volume Serial Number is 1773-83D6
[exec]
[exec] Directory of C:\tmp\ant\src
[exec]
[exec] 30/11/2011 12:09 0 a.txt
[exec]
[exec] Directory of C:\tmp\ant\src
[exec]
[exec] 30/11/2011 12:09 0 b.txt
[exec] 2 File(s) 0 bytes
[exec] 0 Dir(s) 435,642,896,384 bytes free
BUILD SUCCESSFUL
Total time: 1 second