使用相对文件名进行路径转换



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

//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

我怎样才能完成我想要的?任何输入是感激的!

您可以使用pathconvert的map参数。

首先通过将其路径附加到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>

以防有人需要获取资源的相对文件路径并将其映射到相应的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>

试试这个:

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

(这里N -要剥离的目录数(必须是正数))

或:在一段代码之后,通过

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

希望有帮助=)

相关内容

  • 没有找到相关文章