检查ant中的存在文件

时间:2011-07-14 09:38:01

标签: ant

  

可能重复:
  Ant task to check if a file exists?

如何检查文件是否存在于目录中,如果不使用其他文件位于不同位置。我尝试了以下但不能帮助我想要的东西。有人可以帮忙吗?

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

2 个答案:

答案 0 :(得分:21)

使用条件测试来确定文件是否存在。然后为每个真实条件设定目标

<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>

答案 1 :(得分:12)

如果你不介意使用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 task to run an Ant target only if a file exists?但使用unless而不是if