2010-09-09 27 views
7

tôi muốn thay thế thẻ trong file nguồn với Ant:Ant thay thế thẻ từ thuộc tính tập tin

some test ${foo} other text ... 

Tokens được chứa trong một thuộc tính tập tin Eg .:

foo=1 

Trên thực tế đây là dễ dàng nếu mã thông báo trong các tệp nguồn giống như '@@ foo @@' hoặc 'foo' nhưng tôi không thể thay thế toàn bộ mã thông báo: $ {foo}

Tôi đã thành công nhiều năm trước nhưng lần này tôi đã thất bại. ..

Cảm ơn

+0

Nói cách khác, làm cùng công việc như maven-nguồn-plugin với lọc nhưng với Ant –

+0

Xem http://stackoverflow.com/q/1232532/183172 –

+0

google "expandproperties con kiến" này là một phần của filterchains –

Trả lời

4

Điều này tương tự như these.

Thuộc tính được tải từ tệp properties.txt. Điểm yếu ở đây là tất cả các lần xuất hiện của ${ trong văn bản đầu vào của bạn được chuyển đổi thành {trước thay thế mã thông báo - điều này có thể phá vỡ mọi thứ nếu chuỗi đó xuất hiện ở nơi khác trong văn bản. Nếu đó là một vấn đề, nó vẫn còn có khả năng thích ứng với giải pháp này.

<copy file="input.txt" tofile="output.txt"> 
    <filterchain> 
    <replaceregex pattern="\$\{" replace="{" /> 
    <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens"> 
      <param type="propertiesfile" value="properties.txt"/> 
      <param type="tokenchar" name="begintoken" value="{"/> 
      <param type="tokenchar" name="endtoken" value="}"/> 
    </filterreader> 
    </filterchain> 
</copy> 
Các vấn đề liên quan