ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Reilly <peter.kitt.rei...@gmail.com>
Subject Re: <target unless=...>
Date Thu, 22 Aug 2013 16:49:54 GMT
Maybe ant-contrib's runtarget may fit better for your use-case.

Peter


On Thu, Aug 22, 2013 at 9:52 AM, Eric Fetzer <elstonkers@yahoo.com> wrote:

> This is insane!  Is there no way to preserve information set in an
> antcall?  I tried to change strategy a little and do the following:
>
> <project default="invalid">
>     <!-- Import the properties_common.xml file -->
>     <import file="properties.xml" />
>     <import file="includes.xml" />
>     <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>     <taskdef name="unset" classname="ise.antelope.tasks.Unset"/>
>   <target name="invalid">
>      <property name="labelset" value="false"/>
>      <antcall target="dotest1" inheritall="true" />
>      <echo>before going to dotest2 labelset = ${labelset}</echo>
>      <antcall target="dotest2" inheritall="true" />
>   </target>
>   <target name="dotest1" depends="setvalue">
>     <echo message="in test1 and value of labelset is:  ${labelset}"/>
>   </target>
>   <target name="dotest2" depends="setvalue">
>     <echo message="in test2"/>
>     <echo message="value of labelset is:  ${labelset}"/>
>   </target>
>   <target name="setvalue">
>     <if>
>       <equals arg1="${labelset}" arg2="false" />
>       <then>
>         <echo>Before setting the value, labelset = ${labelset}</echo>
>         <echo>setting the value to true</echo>
>         <unset name="labelset"/>
>         <property name="labelset" value="true" />
>         <echo>labelset = ${labelset}</echo>
>       </then>
>     </if>
>   </target>
> </project>
>
> Same results:
>
> Buildfile: testthrow.xml
> invalid:
> setvalue:
>      [echo] Before setting the value, labelset = false
>      [echo] setting the value to true
>      [echo] labelset = true
> dotest1:
>      [echo] in test1 and value of labelset is:  true
>      [echo] before going to dotest2 labelset = false
> setvalue:
>      [echo] Before setting the value, labelset = false
>      [echo] setting the value to true
>      [echo] labelset = true
> dotest2:
>      [echo] in test2
>      [echo] value of labelset is:  true
> BUILD SUCCESSFUL
>
> It loses the setting that happened in setvalue...  Anybody?????
>
>
> ----- Original Message -----
> From: Eric Fetzer <elstonkers@yahoo.com>
> To: "McNish, Budd" <bmcnish@HealthPlan.com>; Ant Users List <
> user@ant.apache.org>
> Cc:
> Sent: Wednesday, August 21, 2013 3:31 PM
> Subject: Re: <target unless=...>
>
> I just threw this out because I couldn't get anything to work.  Reviving
> because I can't accept failure.  Budd, your repro wasn't doing what I
> wanted, but I didn't realize why until now.  The reson you went into test1
> was because you didn't put an unless clause on it.  Put the unless clause
> on it and you wouldn't go into it.  As soon as you instantiate the var, you
> won't go into any of the targets for the var.  I want to go into my target
> once and only once.  Consider the following example:
>
> <project default="invalid">
>     <!-- Import the properties_common.xml file -->
>     <import file="properties.xml" />
>     <import file="includes.xml" />
>     <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>     <taskdef name="unset" classname="ise.antelope.tasks.Unset"/>
>   <target name="invalid">
>         <var name="testit" value=""/>
>         <antcall target="dotest1" inheritall="true" />
>         <antcall target="dotest2" inheritall="true" />
>   </target>
>   <target name="dotest1" depends="setvalue">
>     <echo message="in test1 and value of testit is:  ${testit}"/>
>   </target>
>   <target name="dotest2" depends="setvalue">
>     <echo message="in test2"/>
>     <echo message="value of testit is:  ${testit}"/>
>   </target>
>   <target name="setvalue" unless="testit">
>       <echo>setting the value to true</echo>
>       <var name="testit" value="true" />
>       <echo>testit = ${testit}</echo>
>   </target>
> </project>
>
> It won't go into setvalue ever because testit is already instantiated.  I
> want it to go in once.  Anyone able to help me on this?
>
> Thanks,
> Eric
>
>
> ----- Original Message -----
> From: Eric Fetzer <elstonkers@yahoo.com>
> To: "McNish, Budd" <bmcnish@HealthPlan.com>; Ant Users List <
> user@ant.apache.org>
> Cc:
> Sent: Wednesday, May 15, 2013 9:59 AM
> Subject: Re: <target unless=...>
>
> Ahhh, you're using var instead of property.  I missed that before.  Since
> you instantiate it first, the scope remains over the antcalls.  Beautiful,
> thanks Budd!
>
> Eric
>
> ----- Original Message -----
> From: "McNish, Budd" <bmcnish@HealthPlan.com>
> To: Ant Users List <user@ant.apache.org>; 'Eric Fetzer' <
> elstonkers@yahoo.com>
> Cc:
> Sent: Wednesday, May 15, 2013 9:36 AM
> Subject: RE: <target unless=...>
>
> Eric,
>
> Okay try this one.
>
> <project default="invalid">
>   <target name="invalid">
>       <taskdef resource="net/sf/antcontrib/antcontrib.properties">
>       <classpath location="${antcontrib.jar}"/>
>     </taskdef>
>       <var name="testit" value="" />
>       <antcall target="test1" inheritall="true" />
>     <antcall target="test2" inheritall="true" />
>   </target>
>   <target name="test1" depends="setvalue">
>     <echo message="in test1 and value of testit is:  ${testit}"/>
>   </target>
>   <target name="test2" unless="testit">
>     <echo message="in test2"/>
>     <echo message="value of testit is:  ${testit}"/>
>   </target>
>   <target name="setvalue">
>       <echo>setting the value to 1.2.3.4</echo>
>       <var name="testit" value="1.2.3.4" />
>       <echo>testit = ${testit}</echo>
>   </target>
> </project>
>
> C:\IBM>ant -f /temp/throw.xml
> Buildfile: C:\temp\throw.xml
>
> invalid:
>
> setvalue:
>     [echo] setting the value to 1.2.3.4
>     [echo] testit = 1.2.3.4
>
> test1:
>     [echo] in test1 and value of testit is:  1.2.3.4
>
> test2:
>
> BUILD SUCCESSFUL
> Total time: 0 seconds
>
> C:\IBM>
>
> Budd A. McNish
>
> Health Plan Services
> 813-289-1000 ext. 2352
>
>
>
>
> -----Original Message-----
> From: Eric Fetzer [mailto:elstonkers@yahoo.com]
> Sent: Wednesday, May 15, 2013 11:21 AM
> To: Ant Users List
> Subject: Re: <target unless=...>
>
> Sorry Budd, it looks like I wasn't clear on one aspect of this.  The value
> of this property must be set inside of the first target called.  In
> reality, the first target called has a depends target that may set
> this property.  Based on whether it sets that property, we may or may not
> want to come back to that target again.  So a more valid repro would be:
>
> <project name="test" default="testIt">
>   <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>   <target name="testIt">
>      <antcall target="test1" inheritall="true" />
>      <echo message="back out to main target, label is:  ${label}"/>
>      <antcall target="test2" inheritall="true" />
>   </target>
>   <target name="test1" depends="setLabel" >
>     <echo message="in test1 and value of label is:  ${label}"/>
>   </target>
>   <target name="test2" depends="setLabel">
>     <echo message="in test2"/>
>     <echo message="value of label is:  ${label}"/>
>   </target>
>   <target name="setLabel" unless="label">
>     <property name="label" value="1.2.3.4"/>
>     <echo message="I'm creating a label here..."/>
>   </target>
> </project>
>
> And the results from running this are:
>
>
> Buildfile: test.xml
> testIt:
> setLabel:
>      [echo] I'm creating a label here...
> test1:
>      [echo] in test1 and value of label is:  1.2.3.4
>      [echo] back out to main target, label is:  ${label}
> setLabel:
>      [echo] I'm creating a label here...
> test2:
>      [echo] in test2
>      [echo] value of label is:  1.2.3.4
> BUILD SUCCESSFUL
> Total time: 0 seconds
>
>
> You see that it attempts to create the label twice which will fail in my
> real application.  I think what I need to do instead is:
>
> <project name="test" default="testIt">
>   <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>   <target name="testIt" depends="setLabel">
>      <antcall target="test1" inheritall="true" />
>      <antcall target="test2" inheritall="true" />
>   </target>
>   <target name="test1">
>     <echo message="in test1 and value of label is:  ${label}"/>
>   </target>
>   <target name="test2">
>     <echo message="in test2"/>
>     <echo message="value of label is:  ${label}"/>
>   </target>
>   <target name="setLabel">
>     <property name="label" value="1.2.3.4"/>
>     <echo message="I'm creating a label here..."/>
>   </target>
> </project>
>
> In my real world application, that will take some rewriting, but simple is
> good...  Thanks for looking at my spaghetti (mmmmmm, meatballs)!
>
> Thanks,
> Eric
>
>
>
> ----- Original Message -----
> From: "McNish, Budd" <bmcnish@HealthPlan.com>
> To: Ant Users <user@ant.apache.org>; 'Eric Fetzer' <elstonkers@yahoo.com>
> Cc:
> Sent: Wednesday, May 15, 2013 8:48 AM
> Subject: RE: <target unless=...>
>
> This works.
>
> <project default="invalid">
>   <target name="invalid">
>       <property name="testit" value="" />
>       <antcall target="test1" inheritall="true" >
>         <param name="testit" value="true"/>
>       </antcall>
>     <antcall target="test2" inheritall="true" />
>   </target>
>   <target name="test1">
>     <echo message="in test1 and value of testit is:  ${testit}"/>
>   </target>
>   <target name="test2" unless="testit">
>     <echo message="in test2"/>
>     <echo message="value of testit is:  ${testit}"/>
>   </target>
>
> </project>
>
> C:\IBM>ant -f /temp/throw.xml
> Buildfile: C:\temp\throw.xml
>
> invalid:
>
> test1:
>     [echo] in test1 and value of testit is:  true
>
> test2:
>
> BUILD SUCCESSFUL
> Total time: 0 seconds
>
> C:\IBM>
>
> Budd A. McNish
>
> Health Plan Services
> 813-289-1000 ext. 2352
>
>
>
>
> -----Original Message-----
> From: Eric Fetzer [mailto:elstonkers@yahoo.com]
> Sent: Wednesday, May 15, 2013 10:14 AM
> To: Ant Users
> Subject: <target unless=...>
>
> Hi!  I've found that my unless= is somewhat useless when using <antcall>.
> Here's a repro for what I'm trying to do:
>
> <project name="test" default="testIt">
>   <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>   <target name="testIt">
>      <antcall target="test1" inheritall="true" />
>      <antcall target="test2" inheritall="true" />
>   </target>
>   <target name="test1">
>     <property name="testit" value="true"/>
>     <echo message="in test1 and value of testit is:  ${testit}"/>
>   </target>
>   <target name="test2" unless="testit">
>     <echo message="in test2"/>
>     <echo message="value of testit is:  ${testit}"/>
>   </target>
> </project>
>
> And the results that I'm sure you anticipate as you understand how antcall
> works:
>
> [me@myMachine]$ ant -f test.xml
> Buildfile: test.xml
> testIt:
> test1:
>      [echo] in test1 and value of testit is:  true
> test2:
>      [echo] in test2
>      [echo] value of testit is:  ${testit} BUILD SUCCESSFUL Total time: 0
> seconds
>
>
> My actual antcall is in a for loop using a list to call targets that start
> with the same word, like so:
>
> <for list="${build.apps} param="app">
>    <sequential>
>       <antcall target="build@{app}"/>
>    </sequential>
> </for>
>
> Can anyone give me a better methodology for achieving the results I'm
> after?
>
> Thanks,
> Eric
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For additional
> commands, e-mail: user-help@ant.apache.org
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _ CONFIDENTIALITY NOTICE: If you have received this email in error, please
> immediately notify the sender by e-mail at the address shown.This email
> transmission may contain confidential information.This information is
> intended only for the use of the individual(s) or entity to whom it is
> intended even if addressed incorrectly. Please delete it from your files if
> you are not the intended recipient. Thank you for your compliance.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For additional
> commands, e-mail: user-help@ant.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For additional
> commands, e-mail: user-help@ant.apache.org
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> CONFIDENTIALITY NOTICE: If you have received this email in error, please
> immediately notify the sender by e-mail at the address shown.This email
> transmission may contain confidential information.This information is
> intended only for the use of the individual(s) or entity to whom it is
> intended even if addressed incorrectly. Please delete it from your files if
> you are not the intended recipient. Thank you for your compliance.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message