OK, so here's what I did with NAnt and a C# .Net project for this same 
problem.  My properties files were all xml, so I wrote a program that read a 
master config file and based on what argument was passed for <environment>, the 
program went into the config file it was configuring at the designated xpath 
and set that node value to the specified environmental value.  So the master 
config file looked something like this:

<xml...>
  <configfile file="C:\program files\myfile.xml">
    <xpath 
value="configuration/appSettings/k...@key="connectionString"]/@value">
      <environments>
        <env dev="myConnectionStringForDev"/>
        <env qa="myConnectionStringForQA"/>
        <env prod="myConnectionStringForProd"/>
      </environments>
    </xpath>
    <xpath value="configuration/appSettings/k...@key="dogHouse"]/@value"> 
      <environments>
        <env dev="devDogHouse"/>
        <env qa="qaDogHouse"/>
        <env prod="prodDogHouse"/>
      </environments>
    </xpath>
  </configfile>
  <configfile file="C:\program files\anotherConfigfile.xml">
    <xpath 
value="configuration/appSettings/k...@key="connectionString"]/@value">
      <environments>
        <env dev="myConnectionStringForDev"/>
        <env qa="myConnectionStringForQA"/>
        <env prod="myConnectionStringForProd"/>
      </environments>
    </xpath>
    <xpath value="configuration/appSettings/k...@key="dogHouse"]/@value"> 
      <environments>
        <env dev="devDogHouse"/>
        <env qa="qaDogHouse"/>
        <env prod="prodDogHouse"/>
      </environments>
    </xpath>
  </configfile>
</xml...>

Seems something similar could be done for non-xml files as well using global 
substitution using regex or such...




________________________________
From: nagish <[email protected]>
To: [email protected]
Sent: Wednesday, May 13, 2009 11:18:00 AM
Subject: Re: Merge base settings with environment specific ones


Thanks for the reply. A couple of clarifications:

1. The setting property files are intended to be built by an Ant script as
part of an application. In other words, the properties contained in those
files are to be read by the application, not by the Ant build script itself.

2. The setting property files are unknown to the Ant script at the time of
writing the script. In other words, they cannot be directly referenced by
the Ant script.

Thanks.

Eric Fetzer wrote:
> 
> 
> 
> 
> The first statement will load in all of the env dependant properties.  The
> second will load in all of the others.  Someone correct me if I'm wrong,
> but I don't believe the second statement will overwrite any of the
> properties that were already set by the first because you would have to
> "unset" those properties first.  This seemed like a bug to me, but I'm
> sure it's by design...
> 

-- 
View this message in context: 
http://www.nabble.com/Merge-base-settings-with-environment-specific-ones-tp23524997p23526214.html
Sent from the Ant - Users mailing list archive at Nabble.com.



      

Reply via email to