Проверьте файл существования в ant

Возможный дубликат:
Ant задача проверить, существует ли файл?

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

 <condition property="somefile.available">
     <or>
         <available file="/home/doc/somefile"/>
         <and>
             <available file="/usr/local/somefile" />
         </and>
     </or>
 </condition>

Ответы

Ответ 1

Используйте тесты условий, чтобы установить, присутствуют ли файлы. Тогда у вас есть цель для каждого истинного условия

<target name="go" depends="file-checks, do-something-with-first-file, do-something-with-second-file"/>

<target name="file-checks">
   <available file="/home/doc/somefile"  property="first.file.found"/>
   <available file="/usr/local/somefile" property="second.file.found"/>
</target>

<target name="do-something-with-first-file" if="first.file.found">
   ???
</target>

<target name="do-something-with-second-file" if="second.file.found">
   ???
</target>

Ответ 2

Если вы не против использования ant -contrib, вы можете принять процедурный подход следующим образом:

  <if>
    <available file="file1"/>
    <then>
      <property name="file.exists" value="true"/>
    </then>
    <else>
      <if>
        <available file="file2"/>
        <then>
          <copy file="file2" tofile="file1"/>
          <property name="file.exists" value="true"/>
        </then>
      </if>
    </else>
  </if>

В противном случае вы, вероятно, можете использовать целевую аудиторию, которая зависит от установленного свойства, указывающего, существует ли файл в предпочтительном месте, например Ant для запуска Ant target, только если файл существует?, но используя unless вместо if.