If you are running Ant 1.6.3 or later, you can use the <isfileselected> condition:
<condition property="skip.replacement"> <isfileselected file="bin/start.bat"> <contains text="set bar=foostart" /> </isfileselected> </condition> The skip.replacement property will be set if the file already contains the replacement text. You can then run <replace> conditionally on this property. You could also use ant-contrib with <if> to combine the check with the execution: <if> <isfileselected file="bin/start.bat"> <contains text="set bar=foostart" /> </isfileselected> <then/> <else> <replace dir="bin" file="bin/start.bat"> <replacetoken><![CDATA[start]]></replacetoken> <replacevalue><![CDATA[set bar=foostart]]></replacevalue> </replace> </else> </if> -Andrew On 12/14/06, Fenlason, Josh <[EMAIL PROTECTED]> wrote:
I want to add a line to a file, but only if the file doesn't already contain that line. I can add the line fine, but I can't figure out how to do it conditionally. Is this possible? Here's what I have so far. Any suggestions would be greatly appreciated. Thanks in advance. <target name="test"> <!-- this replace works, but it adds the line every time --> <replace dir="bin" file="bin/start.bat"> <replacetoken><![CDATA[start]]></replacetoken> <replacevalue><![CDATA[set bar=foo start]]></replacevalue> </replace> <!-- this doesn't replace anything no matter if start.bat contains set bar=foo or not --> <replace dir="bin" includes="bin/start.bat"> <not><contains text="set bar=foo" casesensitive="yes"/></not> <replacetoken><![CDATA[start]]></replacetoken> <replacevalue><![CDATA[set bar=foo start]]></replacevalue> </replace> </target> , Josh.