Если вы просто хотите увидеть предупреждение от «Concat» задачи, если файл отсутствует, вы можете использовать filelist
resource collection вместо «»: набор файлов
<concat destfile="dist/external.js">
<filelist dir=".">
<file name="a.js" />
<file name="b.js" />
</filelist>
</concat>
Когда b.js
не существуют, что дает сообщение:
[concat] /Path/.../b.js does not exist.
Но все равно продолжается, что, вероятно, не то, что вы хотите.
Один из способов проверки наличия всех файлов в коллекции ресурсов заключается в следующем. Обратите внимание, что вам нужно добавить в проект пространство имен antilib: org.apache.tools.ant.types.resources.selectors для использования приведенного ниже resource selectors. (Это не будет работать для версий Ant старше 1.7.0.) Используйте Ant fail task, чтобы проверить отсутствие ресурсов.
<project name="stack_overflow"
xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
<filelist id="my.js.files" dir=".">
<file name="a.js" />
<file name="b.js" />
</filelist>
<restrict id="missing.js.files">
<filelist refid="my.js.files"/>
<rsel:not>
<rsel:exists/>
</rsel:not>
</restrict>
<property name="missing.files" refid="missing.js.files" />
<fail message="These files are missing: ${missing.files}">
<condition>
<length string="${missing.files}" when="greater" length="0" />
</condition>
</fail>
<concat destfile="dist/external.js">
<filelist refid="my.js.files" />
</concat>
</project>
При запуске, как и прежде с b.js
отсутствует, это не может строить до «Concat» задачи с:
BUILD FAILED
/Path/.../build.xml:17: These files are missing: /Path/.../b.js
Извините за столь долго звенеть это как правильно, я нашел это на мой собственный и полностью забыл о вопросе! Кажется, что набор файлов и список файлов - это разные вещи, я считаю, что набор файлов работает лучше, потому что он просто удаляет файл в любом порядке независимо от того, существуют они или нет. Список файлов ищет каждый файл и сбой, если он не существует. – Drew