2012-02-03 38 views
5

Làm cách nào để chuyển đổi tên lớp Java thành đường dẫn tệp bằng cách sử dụng tác vụ Ant?Ant: Chuyển đổi tên lớp thành đường dẫn tệp

Ví dụ: được cung cấp thuộc tính có chứa foo.bar.Duck Tôi muốn thoát ra khỏi foo/bar/Duck.class.

Tôi đã thử (và không thành công) để triển khai điều này theo số <pathconvert><regexpmapper>.

Trả lời

0

Đây là một cách khác, sử dụng Ant resourcesunpackagemapper, được thiết kế cho mục đích này. Các đối diện package mapper cũng có sẵn.

<property name="class.name" value="foo.bar.Duck"/> 

<resources id="file.name"> 
    <mappedresources> 
    <string value="${class.name}" /> 
    <unpackagemapper from="*" to="*.class" /> 
    </mappedresources> 
</resources> 

Bạn sử dụng các giá trị tài nguyên bằng cú pháp helper tài sản ${toString:...}, ví dụ:

<echo message="File: ${toString:file.name}" /> 

sản lượng

[echo] File: foo/bar/Duck.class 
+0

Giải pháp này sẽ làm việc ** chỉ và nếu chỉ ** tài nguyên có thể được tìm thấy ở những nơi khác. Khác, sử dụng giải pháp của [@matt] (http://stackoverflow.com/a/9135198/1099452). – lucasvc

3

Đây là một cách tốt để làm điều này:

<property name="class.name" value="foo.bar.Duck"/> 

<loadresource property="file.name"> 
    <string value="${class.name}" /> 
    <filterchain> 
    <replaceregex pattern="\." replace="/" flags="g" /> 
    <replaceregex pattern="$" replace=".class" /> 
    </filterchain> 
</loadresource> 

này đặt mong muốn foo/bar/Duck.class vào file.name tài sản.

0

tôi cảm thấy sử dụng kiến ​​kịch bản javascript cho điều này là đơn giản hơn nhiều

 <property name="class.name" value="foo.bar.duck" /> 
     <script language="javascript"> 
      var className = project.getProperty("class.name"); 
      println("before: " + className); 
      var filePath= className.replace("\\", "/"); 
      println("File Path: "+filePath); 
      project.setProperty("filePath", filePath);    
     </script> 
     <echo message="${filePath}" /> 

lưu ý: đặt tên biến của bạn giống như đối số ví dụ: var wsPath có thể gây ra lỗi, nó đã cho tôi!

lịch sự: https://stackoverflow.com/a/16099717/4979331

Các vấn đề liên quan