存在しないディレクトリを指すパス要素でパスを定義すると、ant はどのように動作しますか?
<path id="foo.bar">
<pathelement location="this/might/not/exist/">
</path>
シナリオは、ant ファイルが複数のプロジェクトに使用されるというものです。この追加フォルダーがあるプロジェクトもあれば、ないプロジェクトもあります。
アリはそれを無視するだけですか、それとも失敗しますか?
存在しないディレクトリを指すパス要素でパスを定義すると、ant はどのように動作しますか?
<path id="foo.bar">
<pathelement location="this/might/not/exist/">
</path>
シナリオは、ant ファイルが複数のプロジェクトに使用されるというものです。この追加フォルダーがあるプロジェクトもあれば、ないプロジェクトもあります。
アリはそれを無視するだけですか、それとも失敗しますか?
それは文脈に依存します。
タスクのクラスパスとして使用する場合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