2011-11-28 29 views
6

Trong thư mục, src, tôi có một tập các thư mục con với mã nguồn java:Pathconvert với tên tập tin tương đối

/a/A.java

/a/b/B.java

/a/b/c/C.java

tôi cần một tài sản với giá trị sau:

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

tôi thử như sau:

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

nhưng tôi kết thúc với giá trị sau đây về sở hữu của tôi:

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 

Làm thế nào tôi có thể thực hiện những gì mà tôi muốn? Bất kỳ đầu vào được đánh giá cao!

Trả lời

8

Bạn có thể sử dụng thông số map của pathconvert cho việc này.

Đầu tiên có đường dẫn đầy đủ tới thư mục src của bạn bằng cách nối đường dẫn của nó vào giá trị của thuộc tính basedir. Sau đó, sử dụng nó làm thuộc tính from của bản đồ của bạn.

<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

Tuyệt vời, tính năng này hoạt động. Cảm ơn bạn! – Liz

+1

Bạn cũng có thể có đường dẫn tuyệt đối với vị trí thay vì giá trị: '' –

0

Hãy thử một trong hai cái này:

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

(đây N - Số lượng thư mục để tước (phải là một số dương))

hay này: sau mảnh của danh sách điều trị mã của bạn notice-files qua

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

Hope trợ giúp này =)

+0

Đáng tiếc là không ai trong số những công trình này. Tôi không thể sử dụng phương án thay thế đầu tiên vì n "N" không liên tục trong các bản dựng của tôi. Và các dải thay thế thứ hai * tất cả * thư mục và để lại cho tôi chỉ với một danh sách các tệp Java. Vì vậy, tôi kết thúc với: A.java, B.java, C.java mà không phải là những gì tôi muốn. – Liz

2

Chỉ trong trường hợp nếu có ai cần để có được đường dẫn tập tin tương đối của các nguồn lực và bản đồ chúng đến đường dẫn URL phù hợp, vì vậy nó hoạt động cả trên Windows và * nix giải pháp là:

<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> 
Các vấn đề liên quan