1

次のディレクトリ構造があります

  • root_dir
    • fixed_dir
    • random_dir
      • サブディレクトリ1
      • サブディレクトリ2
        • subdir2.1
      • サブディレクトリ3
        • subdir3.1
        • subdir3.2

root_dirANT ビルド ファイルでは、 、 、および( )の下のサブディレクトリfixed_dirである 1 つのディレクトリを知っています。与えられたいくつかのパスを決定する必要があります。ANT でこのディレクトリを見つけることは可能ですか。random_dirrandom_dirsubdirXrandom_dirsubdirX

4

2 に答える 2

1

subdirXこれは、質問で提供されたファイル構造を考慮して、ネストの任意のレベルで いくつかのサブディレクトリを含むルートディレクトリの直接のサブディレクトリを見つけるためのテスト済みのソリューションです。

<property name="root.dir" location="${basedir}/root_dir" />
<property name="subdirX" value="subdir2.1" />

<target name="find-immediate-subdir-of-root-containing-subdirX">
  <dirset dir="${root.dir}" includes="**/${subdirX}" id="mydirset" />
  <pathconvert property="random_dir" pathsep="${line.separator}" refid="mydirset">
    <mapper type="regexp"
        from="^(${root.dir}${file.separator}[^${file.separator}]+).*"
        to="\1"/>
  </pathconvert>
  <echo message="${random_dir}" />
</target>

出力

find-immediate-subdir-of-root-containing-subdirX:
     [echo] /ant/project/basedir/root_dir/random_dir

BUILD SUCCESSFUL
Total time: 1 second
于 2012-08-06T18:53:04.913 に答える
0

Ant アドオン Flakaを使用すると、ファイル オブジェクトのプロパティとして親を取得できます ( Flaka マニュアルのセクション 3.7.2を参照してください。

<project xmlns:fl="antlib:it.haefelinger.flaka">

<!-- let standard ant tasks, i.e. echo
     understand EL expresssions -->
<fl:install-property-handler />

<echo>#{file('${basedir}').parent}</echo>

<!-- or without fl:install-property-handler use fl:echo-->
<fl:echo>#{file('${basedir}').parent}</fl:echo>

</project>

だからあなたは使用します:

#{file('${yoursubdir}').parent
于 2012-08-06T17:51:43.263 に答える