2011-06-27 41 views

回答

9

fileset erroronmissingdir属性自Ant 1.7.1起可用。您必须使用早期版本的1.7。

属性是用来告诉构建悄悄忽略文件集,其基本目录不会在执行时存在:

<copy todir="tmp"> 
    <fileset dir="foo" erroronmissingdir="false"> 
    <include name="**/*"/> 
    </fileset> 
</copy> 

如果不指定erroronmissingdir="false"(或不能,因为你的Ant版本不支持它),那么如果目录不存在,则默认结果是生成失败。

如果您需要您的构建成功,而不管目录是否存在,并且您不能使用erroronmissingdir属性,那么您有一些选项。

例如,你可以指定文件集的基础目录是你的目标目录的已知对存在的父母,这样的事情:

<copy todir="tmp"> 
    <fileset dir="."> 
     <include name="foo/**/*"/> 
    </fileset> 
    </copy> 

(注意,在这种情况下,副本将现在建立在copytodir DIR富,你可以带,其使用水珠mapper

另一种方法是在目标的条件,例如,以执行有条件可用文件集操作,守卫

<available property="foo.available" file="foo"/> 

<target name="test" if="foo.available"> 
    <copy todir="tmp"> 
    <fileset dir="foo"> 
     <include name="**/*"/> 
    </fileset> 
    </copy> 
</target> 

ant -v输出将显示:

[available] Unable to find foo to set property foo.available 
test: Skipped because property 'foo.available' not set. 
BUILD SUCCESSFUL Total time: 0 seconds