2011-11-28 40 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>