2011-11-28 43 views
6

在文件夹中,SRC,我有一组Java源代码的子文件夹:Pathconvert相对文件名

/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 

我怎么能做到我想要什么?任何输入是赞赏!

回答

8

您可以使用参数pathconvert

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

太棒了,这个工程。谢谢! – Liz

+1

你也可以获取绝对路径而不是值:'' –

0

尝试无论是这一个:

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

(这里ñ - 目录数脱光(必须为正数))

或本: 一块代码请客名单后通过

<mapper type="flatten"/> 
<flattenmapper/> 

希望这有助于-of-文件=)

+0

遗憾的是没有的这些作品。我不能使用第一种选择,因为在我的构建中,nuber“N”不是常量。第二种方法是去除所有*文件夹,只留下一个Java文件列表。所以我最终得到:A.java,B.java,C.java,这不是我想要的。 – Liz

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>