2012-04-12 33 views
7

Tôi có một tệp thuộc tính được tạo bởi chính kịch bản kiến ​​của tôi trong khi thực thi. Và tôi muốn truy cập giá trị của các thuộc tính từ tệp thuộc tính được tạo này.Có thể xác định giá trị tài sản là tài sản trong kiến ​​không?

Đối với ví dụ:

Tạo file tài sản:

first.prop=abcd 
second.prop=pqrs 

và trong kịch bản, tôi đang cố gắng để truy cập vào nó như thế này,

Tôi gặp một tên thuộc tính (mà tôi muốn truy cập và trong tệp thuộc tính được tạo) từ một số thuộc tính khác. Tài sản đó là name.prop. vậy,

<echo message="${name.prop}"/> 
<echo message="${${name.prop}}"/> 

cho

first.prop 
${${name.prop}} 

như đầu ra tương ứng. Giải pháp này có thể là gì?

Trả lời

8

Đây là từ doc:

làm tổ của niềng răng

Trong cấu hình mặc định của nó Ant sẽ không cố gắng để cân bằng niềng răng trong mở rộng thuộc tính, nó sẽ chỉ tiêu thụ văn bản lên đến đầu tiên đóng ngoặc nhọn khi tạo tên thuộc tính. I E. khi mở rộng một cái gì đó như $ {a $ {b}}, nó sẽ được dịch thành hai phần:

  • việc mở rộng tài sản là $ {b - có khả năng không hữu ích.
  • văn bản đen} kết quả từ cú đúp đóng cửa thứ hai

này có nghĩa là bạn không thể sử dụng dễ dàng mở rộng thuộc tính có tên do tài sản, nhưng có một số cách giải quyết cho các phiên bản cũ của Ant. Với Ant 1.8.0 và props Antlib bạn có thể cấu hình Ant để sử dụng NestedPropertyExpander được xác định tại đó nếu bạn cần tính năng .

Vì vậy, nó không có sẵn một cách dễ dàng. Bạn có thể tìm cách giải quyết (sử dụng <script /> hoặc <macrodef />here in the official ant faq.

0
I tried this, to get similar values<br/> 
prop.properties contains: 

a=val1 
b=val2 
c=val3 
batch.props=a,b,c 

<for list="${batch.props}" param="prop"> 
    <sequential> 
    <echo>@{prop} is ${[email protected]{prop}}</echo> 
    </sequential> 
</for> 

Got Ans as below: 
a is val1 
b is val2 
c is val3 

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