Cyril:

Sorry, was on my way to bed when I responded... I probably should have tried an example...

I think Jan pointed out something like below...

<project default = "all">
   <target name="all" depends="decide_to_run_group, wrapper" />

   <target name="decide_to_run_group">

       <condition property="doit" value="true">
           <some-boolean-test/>
       </condition>
   </target>

<target name="wrapper" if="doit" depends = "A, B, C, D"/>
   <target name="A"  if="doit">
       <echo message="A"/>
   </target>

   <target name="B"  if="doit">
       <echo message="B"/>
   </target>

   <target name="C"  if="doit">
       <echo message="C"/>
   </target>

   <target name="D"  if="doit">
       <echo message="D"/>
   </target>

</project>




Cyril Sagan wrote:
Scott - Thanks for the response, but that doesn't work.

The "A,B,C,D" depends targets will be executed first, it is only the body of 
"wrapper" that's conditional based on the property.

I'm still looking for an elegant solution.

--Cyril

________________________________________
From: Scot P. Floess [EMAIL PROTECTED]
Sent: Thursday, December 13, 2007 9:46 PM
To: Ant Users List
Subject: Re: How to conditionally run a group of targets?

Why don't you try this...

<target name = "wrapper" if = "doit"  depends = "A, B, C, D"/>

The point is, the depends attribute acts as your grouping ;)

Cyril Sagan wrote:
Our build script needs to run an arbitrary *group* of targets based on
a single property.  Can you help me find a clean way to do this?

Here's an "almost solution" which illustrates what I'd like to
accomplish:

    <target name="all" depends="init, decide_to_run_group, wrapper" />

    <target name="decide_to_run_group">
        <condition property="doit" value="true">
            <some-boolean-test/>
        </condition>
    </target>

    <target name="wrapper" if="doit">
        <antcall>
            <target name="A" />
            <target name="B" />
            <target name="C" />
            <target name="D" />
        </antcall>
    </target>


This does not work.  The problem is that any properties set in the
<antcall>'d targets will not be visible in the calling environment.
Targets A,B,C,etc -- not all of which I control, so I cannot
restructure -- may have side effects, setting state in properties that
I need to have access to.

Regarding the "<antcall> almost solution", I see that there are ways
to pass properties "down to" <antcall>, but I do not know of a clean
way to "pass back".  I found a year+ old question on ant-dev asking
about this, but never saw an answer.

In any case, we aren't set on using (enhancing?) <antcall>, it was
just close to a solution.

Goal is to group the set of targets.  I'm hoping to find a solution
less awkward than this:
    <target name="A" if="doit" ... />
    <target name="B" if="doit" ... />
    <target name="C" if="doit" ... />
    <target name="D" if="doit" ... />

Thanks for any suggestions.

--Cyril

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
QA Engineer OpenQabal    http://openqabal.dev.java.net


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
QA Engineer OpenQabal    http://openqabal.dev.java.net

Reply via email to