Ant предупреждение / сбой при отсутствии файла / build.properties? - PullRequest
4 голосов
/ 09 июня 2011

Задача Ant для моих команд извлекает специфическую информацию для разработчика из файла build.properties, используя тег файла свойств:

<property file="${user.home}/build.properties.txt" />

Однако, если этот файл отсутствует, муравей продолжает независимо. Позже в процессе сборки он затем пытается получить доступ к свойствам, которые не были определены, и пытается войти на сервер SVN как ${user.name} и другие подобные ошибки. Эти ошибки было довольно сложно отладить, так как некоторые из задач муравья, которые я использовал, не давали полезных сообщений об ошибках.

Мой основной вопрос: Есть ли способ задать муравей для быстрого отказа, если он не может найти файл свойств?

Ответы [ 5 ]

8 голосов
/ 09 июня 2011

Вы можете сначала добавить явную проверку.Что-то вроде:

<fail message="Missing build.properties">
  <condition>
    <not>
      <available file="${user.home}/build.properties.txt" />
    </not>
  </condition>
</fail>

, вероятно, добьется цели.

8 голосов
/ 09 июня 2011

Я думаю, вы можете объединить доступные и неудачные:

Устанавливает свойство, если файл присутствует

<available file="${user.home}/build.properties.txt" property="build.properties.present"/>

Сбой, если свойство не установлено

<fail unless="build.properties.present"/>
5 голосов
/ 09 июня 2011

Я предлагаю вместо проверки на наличие конкретного файла свойств проверить на определение свойства. Таким образом, это свойство может быть предоставлено различными способами (например, как -Duser.name=myname).

Вы можете указать предлагаемое имя файла в сообщении об ошибке.

* 1006 например *

<fail message="user.name property is not set.
    It is usually defined in ${user.home}/build.properties.txt">
  <condition>
    <not><isset property="user.name"/></not>
  </condition>
</fail>
2 голосов
/ 11 июля 2013

Используйте целевую задачу «loadproperties» ant вместо «property file =»… »>, потому что последняя задача не выдает жалоб, если отсутствует файл, как в вашем случае. Задача loadproperties всегда будет отказывать при сборке в такомситуация, когда свойства отсутствуют.

0 голосов
/ 10 июня 2011

или даже короче с Муравьиным плагином Flaka =

<project xmlns:fl="antlib:it.haefelinger.flaka">
    ...
 <fl:fail message="Houston we have a problem" test="!'${user.home}/build.properties.txt'.tofile.exists"/>
    ...
</project>
...