在文件夹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/>
希望有帮助=)