This kind of things can be achieved indirectly using either <propertycopy>
from ant-contrib (for sure), or id/refid, provided you can set the ids as
below (precludes loading the properties file, since cannot assign ids).
No telling that it's kind of a hack ;-) --DD
------- 1.4.1 output -------
P:\org_apache\antx>ant -buildfile nestedProperties.xml
Buildfile: nestedProperties.xml
test:
Overriding previous definition of reference to host1
Overriding previous definition of reference to host2
[echo] build.host = host2.acme.org
BUILD SUCCESSFUL
Total time: 1 second
------- 1.5 output -------
P:\org_apache\antx>C:\pro\ant1.5\bin\ant -buildfile nestedProperties.xml
Buildfile: nestedProperties.xml
test:
[echo] build.host = host2.acme.org
BUILD SUCCESSFUL
Total time: 1 second
------- nestedProperties.xml -------
<?xml version="1.0"?>
<!-- ANT build file to test a specific feature or bug of ANT.
Dominique Devienne <[EMAIL PROTECTED]> August 2002
-->
<project name="antx" default="test" basedir=".">
<target name="test">
<!-- Simulate loading the properties file (kinda!)
<property file="hosts.properties"/>
-->
<property id="host1" name="host1" value="host1.acme.org"/>
<property id="host2" name="host2" value="host2.acme.org"/>
<!-- Simulate running the 'hostname' command
<exec outputproperty="hostname" executable="hostname"/>
-->
<property name="hostname" value="host2" />
<property name="build.host" refid="${hostname}"/>
<echo message="build.host = ${build.host}"/>
</target>
</project>
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Thursday, August 15, 2002 11:59 AM
To: [EMAIL PROTECTED]
Subject: nested properties anyone?
Problem:
>From the list of the predefined properties key=value select one based on the
value of some other property and use it as a default
Example:
I have a list of servers (hosts.properties), where key is an actual hostname
(obtained from hostname command) and value is a domain, e.g.
host_one=host_one.somewhere.com
host_two=host_two.some.place.else.com
I want to determine on which machine I'm running the script and use a full
domain name further in the script.
Solution?
1. <property file="hosts.properties"/>
2. <exec outputproperty="hostname" executable="hostname"/>
3. Now I have a ${hostname} and I want to assign its value to the property
build.host that I use in my script. My first reaction was to do this:
<property name="build.host" refid="${${hostname}}"/>
Well it didn't work because curleys are evaluated only once and I'm getting
the
value of build.host literaly as "${hostname}"
Is there any other way? Any way?
And I think that it would be nice feature to reevaluate the nested brackets
Bob Stone
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>