蚂蚁如何治疗不存在的疾病?

时间:2010-10-15 07:36:06

标签: ant path pathelement

如果我定义一个带有指向不存在目录的pathelement的路径,ant的行为如何?

<path id="foo.bar">
   <pathelement location="this/might/not/exist/">
</path>

场景是ant文件用于多个项目 - 有些项目有这个额外的文件夹,有些没有。

蚂蚁会忽略它,还是会失败?

1 个答案:

答案 0 :(得分:2)

这取决于具体情况。

当用作javac任务的类路径时,将忽略缺少的目录:

  

此任务将删除所有指向不存在的条目    它传递给编译器的类路径中的文件/目录。

但是如果您使用包含不存在的目录的路径(例如copy的来源),则会出错。 例如,这里存在“one”和“three”目录,但“two”不存在:

<path id="mypath">
    <pathelement path="one" />
    <pathelement path="two" />
    <pathelement path="three" />
</path>

<copy todir="dest">
    <path refid="mypath" />
</copy>

BUILD FAILED
/.../build.xml:14: Warning: Could not find resource file ".../two" to copy.

您可以使用dirset过滤掉丢失的项目:

<pathconvert property="dirs.list" pathsep="," refid="mypath">
    <map from="${basedir}/" to="" />
</pathconvert>
<dirset id="exists.dirs" dir="." includes="${dirs.list}" />    
<copy todir="dest">
    <dirset refid="exists.dirs" />
</copy>

 [copy] Copied 2 empty directories to 2 empty directories under /.../dest