build.xmlで「"」をエスケープしたい時

後輩が嵌っていたので書いてみる。

build.xmlの中ではリテラルとして「"」がエスケープできません。
なので以下のようなbuild.xmlはエラーになります。

    
        
    

↓実行すると

 >ant test
 Buildfile: build.xml
 BUILD FAILED
 build.xml:14: Element type "echo" must be followed by either attribute specifications,
  ">" or "/>".

こんな風に\でエスケープしても同じ。

    
        
    

当たり前だがVBっぽく「""」とかExcelっぽく「~」とかもダメ
なのでどうするかということなんてことはないbuild.propertiesに書きます。
build.properties

 hoge = ant\u306f"\u87fb"\u3067\u3059  ←2バイト文字なのでnative2asciiして記載する

build.xml

    
        
    

とすると

 build>ant test
 Buildfile: build.xml
 test:
     [echo] antは"蟻"です
 BUILD SUCCESSFUL

となり問題なくクリア。置換するときとかもこれでOK。動的に使う場合は変数として「"」のみをbuild.propertiesに書き出すとかすれば良い。

      • -

20090331追記
コメントで教えていただいたのだが、以下のように書けばエスケープできるらしい!

<echo message="antは$#34;蟻$#34;です"/>

なるほど!!