2

存在しないディレクトリを指すパス要素でパスを定義すると、ant はどのように動作しますか?

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

シナリオは、ant ファイルが複数のプロジェクトに使用されるというものです。この追加フォルダーがあるプロジェクトもあれば、ないプロジェクトもあります。

アリはそれを無視するだけですか、それとも失敗しますか?

4

1 に答える 1

2

それは文脈に依存します。

タスクのクラスパスとして使用する場合javac、欠落しているディレクトリは単に無視されます。

このタスクは、コンパイラに渡すクラスパスから、存在しないファイル/ディレクトリを指すすべてのエントリを削除します。

ただし、存在しないディレクトリを含むパスを、たとえばのソースとして使用するとcopy、エラーが発生します。たとえば、ここではディレクトリ「1」と「3」は存在しますが、「2」は存在しません。

<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
于 2010-10-15T10:01:20.737 に答える