Как я могу проверить, существует ли файл, и если нет, убить сборку? - PullRequest
13 голосов
/ 28 октября 2009

Как я могу остановить сборку и уведомить пользователя, если файл не существует? Я знаю, что могу использовать имеющуюся задачу, чтобы установить свойство, если файл существует, но я не уверен, как остановить сборку и вывести что-либо.

Я бы хотел придерживаться основных задач, если это возможно.

Ответы [ 5 ]

18 голосов
/ 28 октября 2009

Вы можете использовать сбойное задание для всех ваших неудавшихся потребностей. Последний пример на этой странице - это практически то, что вам нужно

<fail message="Files are missing.">
    <condition>
        <not>
            <resourcecount count="2">
                <fileset id="fs" dir="." includes="one.txt,two.txt"/>
            </resourcecount>
        </not>
    </condition>
</fail>
15 голосов
/ 25 мая 2014

Немного проще (хотелось бы, чтобы все было проще)

<fail message="file ${myfile} not set or missing">
    <condition>
        <not>
            <available file="${myfile}" />
        </not>
    </condition>
</fail>
6 голосов
/ 28 октября 2009

Установите свойство и используйте задачу Fail с атрибутом if.

3 голосов
/ 30 сентября 2016

Это можно сделать более компактно (как указано Джейсоном Пуньоном). В частности, предполагая, что нужный файл находится в свойстве file, выполните:

<available file="${file}" property="file.exists" />
<fail message="File missing: ${file}" unless="file.exists" />
0 голосов
/ 30 мая 2018

Такие проверки встречаются часто, поэтому использование макроса может окупиться. Вот макрос, основанный на решении leonbloy:

<macrodef name="require">
    <attribute name="file"/>
    <attribute name="message" default="file @{file} not set or missing"/>
    <sequential>
        <fail message="@{message}">
            <condition>
            <not>
                <available file="@{file}" />
            </not>
            </condition>
        </fail>
    </sequential>
</macrodef>

Используйте вот так:

<require file="${myfile}" />

или

<require file="${myfile}" message="my custom message" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...