Если вы просто хотите увидеть предупреждение от задачи 'concat', когда файл отсутствует, вы можете использовать filelist
набор ресурсов вместо набора файлов «:
<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.
Но все равно происходит, что, вероятно, не то, что вы хотите.
Один из способов проверки наличия всех файлов в коллекции ресурсов заключается в следующем. Обратите внимание, что вам нужно добавить пространство имен «antlib: org.apache.tools.ant.types.resources.selectors» в проект, чтобы использовать селекторы ресурсов , показанные ниже. ( Это не будет работать для версий Ant старше 1.7.0. ) Используйте задачу Ant fail, чтобы проверить, не пропущены ли ресурсы.
<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