Hi,

Values of Ant properties set in <ant> or <antcall> are NOT kept between different calls to <ant> or <antcall>.

Note in particular that, for this reason, ant-contrib proivdes a <runtarget> (a bit shaky, though) which WILL keep the values of properties set in the called target, contrarily to <ant> or <antcall>.

That said, I would add that you should definitely spend time having <var> / ant-contrib work fine rather than construct complex Ant / shell interactions, which completely break the advantage of being system-independent.

About the ant-contrib task defintion: I have been using this line for importing ant-contrib tasks in a pretty big Ant-based tool (multiple J2EE app installer), and it works just fine:
       <typedef resource="net/sf/antcontrib/antlib.xml" />

Like said earlier, the ant-contrib.jar should be in the Ant's runtime classpaht. I.e., in $ANT_HOME/lib, or explicitely on the command line when running Ant. Note that extracting the antlib.xml file from the JAR achieves nothing, as "classpath" is definitely different from "file path".



*Olivier Gies*

*Delivery Manager
Customs & Tax Software Engineering Center
Bull, Architect of an Open World ^TM
Phone: +86 (10) 65978001 - Ext 555 *

*www.bull.com <http://www.bull.com/>*

*This e-mail contains material that is confidential for the sole use of the intended recipient. Any review, reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.*



-------- Original Message  --------
Subject: Re: Calling a cmd batch file from Ant
From: Chris Green <[EMAIL PROTECTED]>
To: Ant Users List <user@ant.apache.org>
Date: 28/05/2008 16:57
Jan

Unless I'm missing something here, that wouldn't work.

You can't redefine an ant property one it has already been defined in one
specific execution of the said script.

That's why I was trying to get the batch file to set up an environment
variable before executing the generic component.xml

Chris

On Wed, May 28, 2008 at 10:49 AM, <[EMAIL PROTECTED]> wrote:

But in your original post you have specified the component in your batch
file.
Batch file contents are :-

set component=common
ant -f %build.dir%/component.xml
Where is the difference?

<project name="master">
   <target name="buildComponentOne">
       <ant antfile="component.xml">
           <property name="component" value="one"/>
       </ant>
   </target>
   <target name="buildComponentTwo">
       <ant antfile="component.xml">
           <property name="component" value="two"/>
       </ant>
   </target>
</project>

<project name="component">
   <property file="${component}.properties"/>
   <echo> Build one: ${one} </echo>
   <echo> Build two: ${two} </echo>
</project>

one.properties:
# Specifies which parts for component 'one' to do
one=J
two=N

two.properties:
# Specifies which parts for component 'one' to do
one=J
two=J



Jan



-----Ursprüngliche Nachricht-----
Von: Chris Green [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 28. Mai 2008 10:36
An: Ant Users List
 > Betreff: Re: Calling a cmd batch file from Ant
Can't use ant or antcall's even in a nested structure. Reason being :-

Script process designed to build numerous components of an
application.

Each of these components has a parameter set up in the
properties file set
to Y or N to define whether that component is built during
that execution of
the script.

Therefore, more than one component may need to be built
during one execution
of the build script.

On this basis, the controlling ant script, build.xml cannot have the
component variable defined within it, even nested, as it
potentially needs
to be redefined multiple times.

The component.xml file (generic) which is called again and
again for each
component that needs to be build. Want to keep this generic
and as simple as
possible. Therefore no hard coding using if statements to set the
'component' variable.

On Wed, May 28, 2008 at 10:05 AM, Knuplesch, Juergen <
[EMAIL PROTECTED]> wrote:

If you use <ant> Task or <antcall>  you can run the target
with different
content of a property.
E.g.

<antcall target="your.target" inheritall="false">
                 <param name="your.property" value="value1" />
               </antcall>

<antcall target="your.target" inheritall="false">
                 <param name="your.property" value="value2" />
               </antcall>

I even use this in <for> loops made with antcontrb.



--
Jürgen Knuplesch                    www.icongmbh.de
icon Systemhaus GmbH                Tel. +49 711 806098-275
Sophienstraße 40
D-70178 Stuttgart                   Fax. +49 711 806098-299

Geschäftsführer: Uwe Seltmann
HRB Stuttgart 17655
USt-IdNr.: DE 811944121
-----Ursprüngliche Nachricht-----
Von: Chris Green [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 28. Mai 2008 09:51
An: Ant Users List
Cc: [EMAIL PROTECTED]
Betreff: Re: Calling a cmd batch file from Ant

The reason I'm not using ant is that :-

1. My main build.xml script calls the component.xml script
numerous times.
2. Each time the component.xml script is called, the
variable 'component'
needs to be set to something different.
3. Component.xml is generic therefore don't want to hard
code anything
variables in 4. Once variable set, can't be changed.

Honestly, there is some underlying logic behind all of this.

Chris

On Wed, May 28, 2008 at 9:41 AM, <[EMAIL PROTECTED]> wrote:

I am calling a dos batch file from an Ant script using
the following
code :-

<property name="dos" location="c:/windows/system32/cmd.exe"/>


<exec executable="${dos}" dir="c:/build/">
          <arg value="CommonCommponent.bat"/> </exec>

On the assumption that I get the Microsoft Windows
Copyright info
appear, I assume the above commands are running ok. The
only trouble
is, the contents / commands in the batch file don't seen to get
executed.
http://ant.apache.org/faq.html#batch-shell-execute


Batch file contents are :-

set component=common
ant -f %build.dir%/component.xml
Why not use <ant> ?


Jan


---------------------------------------------------------------------
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]


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




Reply via email to