Re: Using "if" to test for existence of properties

Christopher Brandt <[email protected]>
Newsgroups gmane.comp.windows.dotnet.nant.user
Message-ID <[email protected]>
Same strategy here; ensure the property exists and then use the if attribute
to test its value. One place where you can use the if / unless attributes to
test existence is in setting the property itself, so giving it a default
value. We use the following to ensure that required properties are at least
set to a default value:

<property name="ernex.core.build" value="Latest"
unless="${property::exists('ernex.core.build')}" />

Hope that helps
---
Chris.

Continuous improvement is better than delayed perfection. - Mark Twain


On Tue, Apr 13, 2010 at 7:51 AM, Bob Archer <[email protected]> wrote:

>  I think I have run into this before. I think the easiest fix is to make
> sure the property always exists. Then you can check to see if it is not
> empty.
>
>
>
> BOb
>
>
>
>
>
> *From:* Durand Van Arnem [mailto:[email protected]]
> *Sent:* Tuesday, April 13, 2010 10:33 AM
> *To:* NAnt Users
> *Subject:* [NAnt-users] Using "if" to test for existence of properties
>
>
>
> Hello,
>
> I could use some advice about how to handle this situation:
>
> I have a property, MyProperty, that may or may not be set.  I want a task
> to execute if the property is set, e.g.
> <echo messsage="Hello ${MyProperty}!" if="${property::exists('MyProperty')"
> />
>
> If MyProperty is not set, this task fails because NAnt appears to evaluate
> the message portion regardless of the result of the IF evaluation.  I could
> rewrite like this:
>
> <if test="${property::exists('MyProperty')}">
>     <echo message="Hello ${MyProperty}!" />
> </if>
>
> However, I run into the same issue with filterchains:
>
> <!-- FAILS if MyProperty is not set, because NAnt evaluates the tokens
> regardless of the IF result -->
> <copy failonerror="true" verbose="true" todir="C:\Temp">
>     <fileset refid="Deploy-FileSet" />
>     <filterchain>
>         <replacetokens begintoken="[" endtoken="]" ignorecase="true"
> if="${property::exists('MyProperty')}">
>             <token key="ABC" value="${MyProperty}" />
>         </replacetokens>
>     </filterchain>
> </copy>
>
> I'd rather not enclose the whole definition of the copy in an IF, with a
> nearly identical "else" version for the case when MyProperty is not set.
>
> How have you handled this situation?
>
> Thanks,
> Durand
>
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> NAnt-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/nant-users
>
>

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev

_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.