This is how I'd approach the problem. 
(I haven't tried it, so there may be some bugs in there):

<project name="topLevel">
    <property name="product" value="xyz" description="Default to product xyz. 
Overload in command line if required" />

    <property name="abcd" value="build/esrst/build_abcd.xml" />    
    <property name="xyz" value="build/ccp/build_xyz.xml" />

    <macrodef name="copyProperty">
        <attribute name="property" />
        <attribute name="srcProperty" />
        <sequential>
            <fail unless="@{srcProperty}" message="There isnt a property called 
@{srcProperty}" />
            <property name="@{property}" value="${@{srcProperty}}"
        </sequential>
    </macrodef>

    <copyProperty property="BUILD_FILE" srcProperty="${product}" />
    
    <target name="javabuild" >
        <ant antfile="${BUILD_FILE}" inheritAll="true" target="javabuild" />
    </target>    

    <target name="deploy" >
        <ant antfile="${BUILD_FILE}" inheritAll="true" target="deploy" />
    </target>

</project>
 


Regards,
Chris Holman, Chordiant/STAR Build Engineer
gTalk: chris.d.hol...@googlemail.com
LinkedIn: http://uk.linkedin.com/in/chrisdholman
-----Original Message-----
From: Swayam Prakash Vemuri [mailto:vemuriswa...@gmail.com] 
Sent: 01 March 2012 16:37
To: Ant Users List
Subject: Re: Passing multiple targets from one build.xml to another build.xml

What I meant by I have only build xml, is I dont have build_abcd.xml and
neither I have build_xyz.xml.
Say that I have just build.xml with some targets defined.

And Iam not invoking any other build xml from this build.xml, that being
the case
ant understands howmany ever targets I give dynamically.

The moment I invoke one build.xml from other, ant is not able to understand
any of the targets passed unless I explicitly define
each of the target as you mentioned.

Just like in Java where we have varargs, ant should be having something,
otherwise in the simple case(where Iam not invoking one build from other)
how come ant was able to understand multiple dynamic targets, whereas the
same its not able to understand in the case of invoking one build from
another

thanks
Swayam

On Thu, Mar 1, 2012 at 9:56 PM, Swayam Prakash Vemuri <
vemuriswa...@gmail.com> wrote:

> Thanks much Chris for the quick reply.
> Full marks to your reasoning, yes by mistake I have not specified any
> target it was invoking default target which was deploy.
>
> But had it been this way, say that, Iam not invoking two different build
> xmls, say I have only one build xml, in that case
> I am able to give multiple targets dynamically and ant is able to
> understand, why the same is not possible when Iam invoking
> one  build xml from another. Why in the latter case ant is not able to get
> the targets dynamically
>
> Thanks
> Swayam
>
>
> On Thu, Mar 1, 2012 at 6:06 PM, Holman, Chris <chris.hol...@bskyb.com>wrote:
>
>> The ant task calls the default target of the project being called if you
>> haven't declared a target in the ant task (that's probably why deploy
>> target is running).
>> If the targets are static you can do this:
>>
>> <if>
>>        <equals arg1="${product}" arg2="abcd"/>
>>        <then>
>>            <echo message="Build for the product abcd"/>
>>            <ant antfile="build/esrst/build_abcd.xml" inheritAll="true" >
>>                   <target>javabuild</target>
>>                  <target>deploy</target>
>>             </ant>
>>        </then>
>>        <else>
>>        <echo message="Build for the product  xyz"/>
>>            <echo message="Build for the product xyz" />
>>            <ant antfile="build/ccp/build_xyz.xml" inheritAll="true" >
>>                   <target>javabuild</target>
>>                  <target>deploy</target>
>>            </ant>
>>        </else>
>>  </if>
>>
>> It's a bit more tricky if the targets are dynamic, i.e. can change in
>> each invocation; because there are multiple targets.
>> In this case you could declare a wrapper target that invoked both (a bit
>> messy if you have many possible target combinations) and pass the name of
>> this target as a property on the cmd line and use that property in a single
>> target attribute.
>>
>> <if>
>>        <equals arg1="${product}" arg2="abcd"/>
>>        <then>
>>            <echo message="Build for the product abcd"/>
>>             <ant antfile="build/esrst/build_abcd.xml" inheritAll="true"
>> target="${BUILD_TARGET}" />
>>         </then>
>>        <else>
>>        <echo message="Build for the product  xyz"/>
>>            <echo message="Build for the product xyz" />
>>             <ant antfile="build/ccp/build_xyz.xml" inheritAll="true"
>> target="${BUILD_TARGET}" />
>>        </else>
>>  </if>
>>
>> Then invoke this using
>>
>> ant -Dproduct=abcd -DBUILD_TARGET=build_and_deploy
>>
>> Regards,
>> Chris Holman
>>
>> -----Original Message-----
>> From: Swayam Prakash Vemuri [mailto:vemuriswa...@gmail.com]
>> Sent: 01 March 2012 12:14
>> To: user@ant.apache.org
>> Subject: Passing multiple targets from one build.xml to another build.xml
>>
>> Hi All,
>>
>> In my topmost build.xml Iam doing below
>>
>> <if>
>>        <equals arg1="${product}" arg2="abcd"/>
>>        <then>
>>            <echo message="Build for the product abcd"/>
>>            <ant antfile="build/esrst/build_abcd.xml" inheritAll="true" >
>>            </ant>
>>        </then>
>>        <else>
>>        <echo message="Build for the product  xyz"/>
>>            <echo message="Build for the product xyz" />
>>            <ant antfile="build/ccp/build_xyz.xml" inheritAll="true" >
>>            </ant>
>>        </else>
>>    </if>
>>
>> Now I am invoking ant as below
>>
>> ant -Dproduct=abcd javabuild deploy
>>
>> It is executing build_abcd.xml but it only does 'deploy' its not calling
>> the first target that is 'javabuild'.
>>
>> So my question is how can I pass javabuild and deploy to build_abcd.xml or
>> build_xyz.xml. can someone pleas help me out
>>
>> thanks
>> Swayam
>>
>> Information in this email including any attachments may be privileged,
>> confidential and is intended exclusively for the addressee. The views
>> expressed may not be official policy, but the personal views of the
>> originator. If you have received it in error, please notify the sender by
>> return e-mail and delete it from your system. You should not reproduce,
>> distribute, store, retransmit, use or disclose its contents to anyone.
>> Please note we reserve the right to monitor all e-mail communication
>> through our internal and external networks. SKY and the SKY marks are trade
>> marks of British Sky Broadcasting Group plc and are used under licence.
>> British Sky Broadcasting Limited (Registration No. 2906991), Sky
>> Interactive Limited (Registration No. 3554332), Sky-In-Home Service Limited
>> (Registration No. 2067075) and Sky Subscribers Services Limited
>> (Registration No. 2340150) are direct or indirect subsidiaries of British
>> Sky Broadcasting Group plc (Registration No. 2247735). All of the companies
>> mentioned in this paragraph are incorporated in England and Wales and share
>> the same registered office at Grant Way, Isleworth, Middlesex TW7 5QD.
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
>> For additional commands, e-mail: user-h...@ant.apache.org
>>
>>
>

Information in this email including any attachments may be privileged, 
confidential and is intended exclusively for the addressee. The views expressed 
may not be official policy, but the personal views of the originator. If you 
have received it in error, please notify the sender by return e-mail and delete 
it from your system. You should not reproduce, distribute, store, retransmit, 
use or disclose its contents to anyone. Please note we reserve the right to 
monitor all e-mail communication through our internal and external networks. 
SKY and the SKY marks are trade marks of British Sky Broadcasting Group plc and 
are used under licence. British Sky Broadcasting Limited (Registration No. 
2906991), Sky Interactive Limited (Registration No. 3554332), Sky-In-Home 
Service Limited (Registration No. 2067075) and Sky Subscribers Services Limited 
(Registration No. 2340150) are direct or indirect subsidiaries of British Sky 
Broadcasting Group plc (Registration No. 2247735). All of the companies 
mentioned in this paragraph are incorporated in England and Wales and share the 
same registered office at Grant Way, Isleworth, Middlesex TW7 5QD.



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to