tags:

views:

173

answers:

1

Hi, i would like to replace tokens in source files with Ant:

some test ${foo} other text ...

Tokens are contained in a properties file eg.:

foo=1

Actually this is easy if tokens in source files were like '@@foo@@' or 'foo' but i'm not able to replace whole token : ${foo}

I've succeed years ago but this time i've failed ...

Thanks

A: 

This is somewhat similar to these.

Properties are loaded from the file properties.txt. The weakness here is that all occurrences of ${ in your input text are converted to { before the token substitution - which may well break things if that string appears elsewhere in the text. If that is a problem, it still aught to be possible to adapt this solution.

<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>
martin clayton