获取包含子目录的根目录的直接子目录

时间:2012-08-06 14:12:05

标签: ant

我有以下目录结构

  • ROOT_DIR
    • fixed_dir
    • random_dir
      • subdir1
      • subdir2
        • subdir2.1
      • subdir3
        • subdir3.1
        • subdir3.2

在ANT构建文件中,我知道root_dirfixed_dir,以及一个random_dir目录或random_dir下面的子目录(subdirX) 。我需要确定random_dir给出一些subdirX的路径。是否可以在ANT中找到此目录,如果是,如何?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用Ant addon Flaka,您将获得父项作为文件对象的属性(请参阅Flaka Manual,第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