Actually, after thinking about this again with a full stomach, why not after properties are loaded fully expand them (if there is a value)?
I know the following is very simplistic but just humor me, what if this were directly in loadFile(): Properties props = new Properties(); try { props.load(new FileInputStream("pom.xml")); String oprop; String iprop; for (Enumeration outer = props.elements() ; outer.hasMoreElements() ;) { oprop=outer.nextElement().toString(); if(props.getProperty(oprop).contains("${")) { for (Enumeration inner = props.elements() ; inner.hasMoreElements() ;) { iprop=inner.nextElement().toString(); if(!props.getProperty(iprop).contains("${")) { props.setProperty(oprop, iprop); } } } } } -----Original Message----- From: EJ Ciramella [mailto:[EMAIL PROTECTED] Sent: Monday, August 04, 2008 12:56 PM To: Ant Developers List Subject: RE: Loading interdependent properties files WAS RE: Trying (and failing) to build the nightly snapshot Actually, there's a much more elegant solution. The core of the issue is the property value NOT existing at the time property file load. So here's what we're going to do: 1 - Load the property files in the order we'd like using the <property file=> kinda thing. 2 - use <echoproperties file="final.properties"/> 3 - Load final.properties. This gives us the order in which we'd like to load the properties AND full expansion of any ${} type properties. Thought I'd share. -----Original Message----- From: EJ Ciramella [mailto:[EMAIL PROTECTED] Sent: Monday, August 04, 2008 12:18 PM To: Ant Developers List Subject: RE: Loading interdependent properties files WAS RE: Trying (and failing) to build the nightly snapshot Right - I meant to ask, is that possible to do? I'm digging around the documentation and it's unclear if I can do: <concat> <propertyset> ..... Kinda thing... -----Original Message----- From: Matt Benson [mailto:[EMAIL PROTECTED] Sent: Monday, August 04, 2008 11:42 AM To: Ant Developers List Subject: RE: Loading interdependent properties files WAS RE: Trying (and failing) to build the nightly snapshot --- EJ Ciramella <[EMAIL PROTECTED]> wrote: > How does ant choose which properties take > precedence? > > So say db.port is defined in three properties files > (default.properties, > stack.properties and machine.properties). > > Generally, we'd load them in this order: > > Machine.properties > Stack.properties > Default.properties > > Developers re-use default.properties, the stack > generally uses a certain > port and finally, a particular machine (say a > secondary machine) would > use a third variation. > > How would that loadproperties task choose which one > takes precedence? That would depend on how you assembled the concatenated resource, I suppose. -Matt > > -----Original Message----- > From: Matt Benson [mailto:[EMAIL PROTECTED] > Sent: Monday, August 04, 2008 10:40 AM > To: Ant Developers List > Subject: Loading interdependent properties files WAS > RE: Trying (and > failing) to build the nightly snapshot > > > --- EJ Ciramella <[EMAIL PROTECTED]> wrote: > > > Right - in an ideal world, sure. > > > > We're using ant for deployments and the first file > > is the MOST specific > > file, the secondary one is the more generic file. > > > > So, in a nutshell, we can't alter the order of the > > property files. > > > > What is interesting though is if all the > properties > > are in the SAME > > file, there's no problem (as all the expansion can > > happen at once). Can > > I do something with concat? <propertyfileset> or > > something? > > > > If concat could do something like, "first found > > takes precedence but in > > general add all the properties" that would be > > perfect... > > > > In Ant 1.7.x, if you can "bundle" all your files, > you > should be able to <loadproperties><concat><!--insert > bundle here--></concat></loadproperties> them. > > HTH, > Matt > > > -----Original Message----- > > From: Steve Loughran [mailto:[EMAIL PROTECTED] > > Sent: Monday, August 04, 2008 9:48 AM > > To: Ant Developers List > > Subject: Re: Trying (and failing) to build the > > nightly snapshot > > > > EJ Ciramella wrote: > > > I think I misunderstood this particular bug. It > > appears to be a > > problem > > > with $${someprop} versus loading two property > > files and the first one > > > containing a ${property} that is set in the > second > > one loaded. > > > > > > To be explicit, if you have two property files, > > a.properties and > > > b.properties, in the first one loaded you have a > > ${property} that is > > set > > > in b.properties, ant leaves it as ${}. > > > > > > a.properties: > > > > > > foo=bar > > > > > > coolprop=${foo}:${from.b.properties} > > > > > > > > > > > > > > > > > > b.properties: > > > > > > from.b.properties=awesome > > > > > > > > > > > > > > > build.xml: > > > > > > <project default="go"> > > > <target name="go" > > > > <property file="a.properties" /> > > > <property file="b.properties" /> > > > <echo>This is a problem: > > ${coolprop}</echo> > > > </target> > > > </project> > > > > > > You'll see this: > > > > > > This is a problem: bar:${from.b.properties} > > > > That's because property expansion takes place when > > the properties files > > are loaded. If you want properties from > > b.properties, load it before > > a.properties > > > > > > > > > > -- > > Steve Loughran > > http://www.1060.org/blogxter/publish/5 > > Author: Ant in Action > http://antbook.org/ > > > > > --------------------------------------------------------------------- > > 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] > > > --------------------------------------------------------------------- > 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] --------------------------------------------------------------------- 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]