Задача Ant concat пожаловаться на отсутствующие файлы - PullRequest
3 голосов
/ 05 января 2011
<concat destfile="dist/external.js">
  <fileset dir=".">
    <include name="a.js" />
    <include name="b.js" />
  </fileset>
</concat>

Это не даст сбой, если a или b отсутствуют.Я попытался установить опционально = "ложь" или asis = "истина", и он всегда жалуется, что эти атрибуты не существуют.

1 Ответ

2 голосов
/ 06 января 2011

Если вы просто хотите увидеть предупреждение от задачи '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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...