具有相对文件名的Pathconvert

时间:2011-11-28 12:32:20

标签: ant mapper

在文件夹src中,我有一组带有java源代码的子文件夹:

/a/A.java

/a/b/B.java

/a/b/c/C.java

我需要一个具有以下值的属性:

src/a/A.java,src/a/b/B.java,src/a/b/c/C.java

我尝试了以下内容:

<pathconvert property="list-of-files">
  <globmapper from="*" to="src/*"/>
  <fileset dir=${src-folder}/>
</pathconvert>

但我最终在我的财产上得到以下价值:

src/full/path/to/folder_a/a/A.java,src/full/path/to/folder_a/a/b/B.java,src/full/path/to/folder_a/a/b/c/C.java

我如何实现我想要的目标?任何意见都表示赞赏!

3 个答案:

答案 0 :(得分:8)

您可以使用pathconvertmap参数。

首先通过将其路径附加到basedir属性的值来获取src目录的完整路径。然后将其用作地图的from属性。

<property name="src.dir" value="${basedir}${file.separator}${src-folder}"/>
<pathconvert property="list-of-files">
  <map from="${src.dir}" to="src"/>
  <fileset dir="${src-folder}"/>
</pathconvert>

答案 1 :(得分:2)

以防万一有人需要获取资源的相对文件路径并相应地将它们映射到URL路径,因此它适用于Windows和* nix,解决方案是:

<pathconvert dirsep="/" pathsep=";" property="css.files.list">
    <map from="${basedir}/" to="" /><!-- This is the trick. Remove slash to make path absolute. -->
    <fileset dir="." includes="${src.dir}/**/*.css" />
</pathconvert>

答案 2 :(得分:0)

尝试这一个:

<pathconvert property="list-of-files">
  <globmapper from="*" to="src/*"/>
  <cutdirsmapper dirs="N"/>
  <fileset dir=${src-folder}/>
</pathconvert>

(此处 N - 要删除的目录数(必须为正数))

或者: 在你的代码之后通过

处理文件列表
<mapper type="flatten"/>
<flattenmapper/>

希望这个帮助=)